【发布时间】:2015-09-22 23:39:20
【问题描述】:
我有一个函数需要从 ifstream(磁盘文件中的文本)或 stringstream(内存中的文本)中读取。
这是我想做的一个例子:
void myFunction(bool file,stringstream& ss){
ifstream inFile;
string oneline;
if (file == true){
//code to open file with inFile
}
while (getline(file==true?inFile:ss, oneline)){
// ..process lines
}
...
...
需要说它不会编译。任何人都可以提出一个适当的方法来实现这一点吗?
【问题讨论】:
-
不要使用
file == true。如果file已经是true,它给你true,如果file是false,它给你假,所以没有理由这样做,永远。实际上,由于这是 C++,所以file == true可能会为某些应该被视为正确的值提供错误的结果。 -
你是说我应该用它来测试布尔值:if(file)
-
是的。它更简洁,更好的编码风格。
==、!=、<等比较操作都会产生一个布尔值,所以如果你已经有了一个布尔值,就不需要使用比较运算符来获得一个。
标签: c++