我们在C++中使用输入输出功能时,按网上搜索到的经验可以知道,通常有类似下面的写法:
//初学C++时应该就知道了,>>和<<运算符的计算值为流对象本身,因此后面可以继续链接其它要输出对象
while (std::cin >> n) {
std::cout << n << '\n';
}
或者
std::ifstream input("filename.txt"); //从文本文件中输入
std::string line;
//从文件中一行一行读取,getline的返回值为第一个参数的引用,也就是流
while (getline(input, line) {
std::cout << line << '\n';
}
这里都将流作为条件进行判断,但是为什么流对象可以作为布尔值呢?
首先上一张stream类之间的继承关系图:
从这幅图可以看出,所有常用的stream类都继承自std::basic_ios
。
而该类有一个函数:std::basic_ios::operator bool()
详情请自行查看 CppReference