
点击蓝字 关注我们

第十二节 基本输入输出

C++ 标准库提供了丰富的输入输出功能,这节我们讨论最基本的输入输出。
C++中的基本输入输出通常使用 iostream 库来实现,其中包括 iostream, istream, ostream,以及相应的派生类如cin, cout,cerr 和 clog。
iostream(输出输出流)
iostream包含的主要类如下:
istream(输入流):用于从输入设备读取数据,是输入操作的基类。常用的派生类包括 cin(标准输入流)和 ifstream(文件输入流)等。
ostream(输出流):用于向输出设备写入数据,是输出操作的基类。常用的派生类包括 cout(标准输出流)和 ofstream(文件输出流)等。
iostream(输入输出流):包含了同时进行输入和输出的功能,是 istream 和 ostream 的组合。
我们这节只讨论标准输入输出流。
#include<iostream>using namespace std;int main(){// 输出到标准输出流(通常是控制台)cout << "hello C++" << endl;system("pause");return 0;}
结果如下:
hello C++
cout 用于输出文本到标准输出流,并使用 << 运算符将文本插入到输出流中。
#include<iostream>using namespace std;int main(){string name;cout << "请输入你的名字:" << endl;cin >> name;// 从标准输入流(通常是键盘)读取字符串cout << "hello "<<name<<"!" << endl;system("pause");return 0;}
请输入你的名字:韦一敏hello 韦一敏!
cin 用于从标准输入流读取用户输入的数据。cin >> name 表示将输入的字符串存储到 name 变量中。
#include<iostream>using namespace std;int main(){// 输出错误信息到标准错误流cerr << "this is a fault message!" << endl;system("pause");return 0;}
结果如下:
this is a fault message!
cerr 用于输出错误信息到标准错误流,cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。
在 C++ 中,输出流可以是缓冲的或非缓冲的。缓冲意味着数据首先存储在内存中,然后在适当的时候才被发送到目标设备。非缓冲则意味着每次写入都立即发送到目标设备。
特别是对于 cerr(标准错误流),其默认情况下是非缓冲的,这意味着每次写入 cerr 都会立即刷新到标准错误流中。这是为了确保错误消息尽可能快地被输出,即使程序崩溃或异常退出时也能得到记录。
#include<iostream>using namespace std;int main(){clog << "this is a log message!" << endl;system("pause");return 0;}
结果如下:
this is a log message!
clog 用于输出日志信息到标准错误流。clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。
我们无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。
这些是 C++ 中基本的输入输出操作,通常用于控制台应用程序。
END
往期推荐




