C++ 输入输出流详解
对C++学习感兴趣的可以看看这篇文章哦:C/C++教程
一、cout
1.原理
在C++中,cout是标准输出流对象。它是一个类似于文件流的对象,其主要作用是将输出内容从程序传递到控制台或文件中。
cout的原理是利用流操作符 “<<”,将要输出的内容插入到输出流中,并在最后通过终止操作符 endl 将输出流中的内容输出到控制台或文件中。
常见用法:
- 输出字符串
可以使用cout输出字符串,只需将字符串作为参数传递给cout即可。
cout << "Hello World!" << endl;
- 输出变量
可以使用cout输出变量,只需将变量名作为参数传递给cout即可。
int num = 10;
cout << num << endl;
- 输出表达式
可以使用cout输出表达式,只需将表达式作为参数传递给cout即可。
int num1 = 10, num2 = 20;
cout << "The sum of " << num1 << " and " << num2 << " is " << num1 + num2 << endl;
2.常用函数
- setw()
setw()函数可以设置输出字段的宽度,其参数为整数类型,表示输出字段的宽度。如果输出字段宽度小于指定宽度,则输出时会在字段前补空格。
int num = 10;
cout << setw(5) << num << endl; // 输出 " 10"
- setprecision()
setprecision()函数可以设置浮点数的输出精度,其参数为整数类型,表示浮点数输出的精度。注意,该函数需要与fixed一起使用才能起作用。
double num = 3.14159265358979;
cout << setprecision(4) << fixed << num << endl; // 输出 "3.1416"
- flush()
flush()函数可以将输出流中的内容强制输出到屏幕或文件中,但不会在最后加上一个换行符。
cout << "Hello";
flush(); // 将"Hello"输出到屏幕
cout << "World" << endl; // 输出 "World" 并换行
3.注意事项
-
输出多个变量或字符串时,可以使用流插入符 “<<” 连接多个输出项,避免多次调用cout函数。
-
对于浮点数的输出,需要使用fixed和setprecision()函数才能保证输出的精度正确。
-
在输出字符串时,需要注意字符串中的转义字符,例如换行符 “\n” 和制表符 “\t”。
-
在输出字符时,需要将字符用单引号包括起来,例如 ‘a’。
-
在输出布尔值时,true和false会分别被解释为1和0。
二、cin
1.原理
cin是C++中标准输入流对象,用于从用户输入设备(通常是键盘)读取数据。cin对象是基于istream类的实例化对象,继承了istream类的所有方法和属性,可以通过输入运算符“>>”来从输入流中读取数据。cin对象是标准输入流对象,它是一个全局对象,可以在程序的任何地方使用。
2.常用函数
- get()函数:从输入流中读取一个字符,并将其返回。如果没有更多字符可供读取,则返回EOF(-1)。
- getline()函数:从输入流中读取一行字符串,并将其存储到指定的字符数组中。getline()函数遇到换行符或文件结束符时停止读取。
- ignore()函数:从输入流中忽略指定数量的字符或指定的分隔符。
- peek()函数:从输入流中读取下一个字符,但不将其从输入流中移除。如果没有更多字符可供读取,则返回EOF(-1)。
cin的使用方法:
使用cin对象可以通过输入运算符“>>”来从输入流中读取数据。具体用法如下:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
cout << "您输入的整数是:" << num << endl;
return 0;
}
3.注意事项
- cin读取用户输入时,要确保输入的数据类型与要读取的数据类型相匹配。如果输入的数据类型不正确,将会导致程序出错。
- 当读取字符串时,如果字符串中包含空格或制表符,则cin只会读取第一个单词。如果需要读取整个字符串,可以使用getline()函数。
- 如果在读取输入时遇到错误或输入不正确,cin会将错误标志设置为“true”,需要使用clear()函数来清除错误标志并重新输入。
- 在读取输入时,cin会将换行符留在输入流中。如果在之后的读取操作中需要读取换行符,可以使用get()函数或忽略掉换行符。
相关文章
- C 和 C++字符串详解
- qt实现web服务器加载vue应用进行C++和html混合编程-连载【6】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
- Linux chroot命令函数介绍(C/C++)
- 【转】C++的const类成员函数
- 详解C++标准库<sstream>中的类stringstream,并利用它实现OpenCV下的图片批量读取
- 21 C++ - 对象的构造和析构
- 《C++程序设计教程(第3版)》——导读
- C/C++中extern关键字详解
- C++中值传递、指针传递和引用传递的比较详解
- C++中返回引用和返回值的区别详解(1)
- C++中的各种预处理的表示
- c++中enum 如何使用
- C++ struct和class区别
- C/C++/Java代码 模式匹配、朴素的模式匹配算法、KMP算法模式匹配 数据结构【经典算法】详解
- 第八届蓝桥杯大赛个人赛决赛(软件类)真题C++
- C++11 std::chrono库详解
- C++ string 类的 find 方法实例详解
- 蓝桥杯历年真题——第十二届C&C++研究生组
- C++ 结构体与枚举详解
- C/C++网络编程详解(Windows版)