🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
🐰 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等
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
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸