C++的输入输出概述

简介: 🐰 C++的输入输出🌸C++的输入输出🌸C++的输入输出流🏡iostream类库中有关的类🌸用流成员函数put输出一个字符🌸用流成员函数write输出字符串🌸用流成员函数get获取一个字符🏡1.无参数的get🏡3.有三个参数的get函数🌸用流成员函数getline读取字符串🌸用流成员函数read读取字符串

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰 C++的输入输出

🌸C++的输入输出

🌸C++的输入输出流

🏡iostream类库中有关的类

🌸用流成员函数put输出一个字符

🌸用流成员函数write输出字符串

🌸用流成员函数get获取一个字符

🏡1.无参数的get

🏡3.有三个参数的get函数

🌸用流成员函数getline读取字符串

🌸用流成员函数read读取字符串


🐰 C++的输入输出

🌸C++的输入输出

C++的输入输出包括以下三个方面的内容:

(1)对系统指定的标准设备的输入输出,如键盘输入数据,输出到显示器屏幕,这就是标准的输入输出

(2)以磁盘文件为对象进行的输入输出,从磁盘文件输入数据给程序,程序的数据输出到磁盘文件,这就是文件的输入输出(文件的I/O)

(3)对内存中指定的空间进行输入输出。通常是指一个字符数组为储存空间。这种输入输出为字符串输入输出(串I/O)

🌸C++的输入输出流

🏡iostream类库中有关的类

C++系统提供了输入输出的iostream类库。在iostream类库中包含许多用于输入输出的类。ios是抽象基类,由它派生出istream类、ostream类。istream类支持输入操作,ostream类支持输出操作。iostream类是从istream类和ostream类通过多重继承而派生的类,iostream类支持输入输出操作。

为了实现文件操作,C++的iostream类库中派生定义了用于文件操作的类:

fstreambase类:这是一个公共基类,文件操作中不直接使用这个类

ifstream类:派生于fstreambsae和istream,用于对文件进行提取操作

ofstream类:派生于fstreambase和ostream,用于对文件进行读入操作

fatream类:派生于fstreambase和iostream,用于对文件进行提取和读入操作

strstreambase是字符串流类基类,它派生定义了用于字符串操作的类:istrstream、ostrstream等

543D2489-D586-4EFB-96FF-0BFD2ABA219A.jpeg

iostream.h(iostream)头文件中定义的类有ios、istream、ostream、iostream等

iostream.h(iostream)头文件包含了对输入输出流进行操作所需的基本信息。除此之外,还定义了以下4种流对象:

(1)cin:是istream的派生类istream_withassign的对象,是标准输入设备(键盘)输入到内存的数据流,所以称为标准输入流

(2)cout:是ostream的派生类ostream_withassign的对象,是从内存输出到标准输出设备(显示器)的数据流,所以称为标准输出流

(3)cerr和clog:作用相似,像输出设备(显示器)输出出错信息。它们区别在于cerr提供不带缓冲区的输出,clog提供带缓冲区的输出

(4)从键盘输入时使用cin流,向显示器输出时用cout流。向显示器输出出错信息时用cerr或clog流。

🌸用流成员函数put输出一个字符

put

put的原型:

ostream& put (char c);

char c:输出的是单个字符

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似于putchar

注意事项:

put函数的实参可以是:1.字符变量(如果是整形变量,会当作ASCII码值,输出对应ASCII码值的字符)2.可以是ASCII码值或者整形表达式

由于返回类型是通用输出流的基类对象的引用,所以可以来连续调用put函数

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char a='m';
6.     cout.put(a)<<endl;
7.     cout.put('m')<<endl;
8.     cout.put(65)<<endl;
9.     cout.put(65).put(66).put(67)<<endl;
10. }
11. 结果:
12. m
13. m
14. A
15. ABC

🌸用流成员函数write输出字符串

write

write的原型:

ostream& write(const char* s,streamsize n);

const char* s:输出字符串的首地址

streamsize n:输出字符串的个数

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似puts

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char a[]="I Love You";
6.     int lenth=(int)strlen(a);
7.     cout.write("I Love You", lenth).put('\n');//可以调用put输出'\0'来进行换行
8.     cout.write(a, lenth)<<endl;//也可以直接使用endl,进行换行
9.     return 0;
10. }
11. 结果:
12. I Love You
13. I Love You

🌸用流成员函数get获取一个字符

🏡1.无参数的get

get

从输入流中提取一个字符

get的原型:

int get();

int 返回类型为整形(int)

注意:不管是读还是写数据,都是在缓冲区拿去数据,如果缓冲区有数据,就不会让你从键盘输入

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char c;
6.     int b;
7.     cout<<"第一次:输入两个字符"<<endl;
8.     c=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
9.     b=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
10.     cout.put(c).put('\n');
11.     cout.put(b)<<endl;
12.     getchar();//getchar()用于清空缓冲区
13.     getchar();//getchar()用于清空缓冲区
14.     getchar();//getchar()用于清空缓冲区
15.     cout<<"第二次:输入两个字符"<<endl;
16.     int x=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
17.     int y=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
18.     cout.put(x);
19.     cout.put(y)<<endl;
20.     return 0;
21. }

🏡2.有一个参数的get

get的原型:

istream& get(char& c);

char& c:读取的数据给变量c

istream& 返回类型是通用输入流的基类对象的引用,因此可以连续输入

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char str;
6.     char ptr;
7.     cout<<"请输入数据"<<endl;
8.     int p=cin.get();
9.     cin.get(str).get(ptr);
10.     cout<<p<<" "<<str<<ptr<<endl;
11.     return 0;
12. }
13. 结果:
14. 请输入数据
15. abc
16. 97 bc

🏡3.有三个参数的get函数

get的原型:

istream& get(char* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char arr[20];
6.     cin.get(arr, 7, ' ');
7.     cout<<arr<<endl;
8.     return 0;
9. }
10. 结果:
11. abcd e
12. abcd

🌸用流成员函数getline读取字符串

getline从输入流中读取一行字符

getline的原型:

istream& getline(cahr* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char arr[20];
6.     cin.getline(arr, 7, ' ');
7.     cout<<arr<<endl;
8.     return 0;
9. }
10. 结果:
11. abcd e
12. abcd

🌸用流成员函数read读取字符串

read用于从输入流中读取指定数目的字符,并将读取的字符存储

read的原型:

istream& read(char* pch,int nCount);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,能读取到nCount个字符

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     char arr[20];
6.     cin.read(arr, 7);//这里能读到nCount个字符,注意get(char* pch,int nCount,char delim)和getline(char* pch,int nCount,char delim)只能读取nCount-1个字符
7.     cout<<arr<<endl;
8.     return 0;
9. }
10. 结果:
11. abcdef
12. abcdef

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸  

相关文章
|
C++
42 C++ - 继承概述
42 C++ - 继承概述
47 0
|
7月前
|
算法 Serverless C++
C++常用头文件概述与示例
C++常用头文件概述与示例
257 0
|
7月前
|
存储 程序员 编译器
c++面向对象概述、内存分析、引用、函数
c++面向对象概述、内存分析、引用、函数
|
7月前
|
存储 算法 测试技术
【C++】容器篇(二)——List的基本概述以及模拟实现
【C++】容器篇(二)——List的基本概述以及模拟实现
|
7月前
|
存储 编译器 程序员
【C++】容器篇(一)—— vector 的基本概述以及模拟实现
【C++】容器篇(一)—— vector 的基本概述以及模拟实现
138 0
|
7月前
|
机器学习/深度学习 算法 C++
C++模板与STL【STL概述】
C++模板与STL【STL概述】
|
7月前
|
编译器 开发工具 C语言
C/C++入门001-概述环境搭建与案例
C/C++入门001-概述环境搭建与案例
|
算法 Linux C++
【C++】STL之vector类概述-2
【C++】STL之vector类概述
55 0
|
存储 算法 C语言
【C++】STL之vector类概述-1
【C++】STL之vector类概述
75 0
|
存储 算法 C语言
【C++】STL之string类概述-3
【C++】STL之string类概述
72 0