例子:
std::ifstream in("some_file.txt");
std::string line; // must be outside ?
while(getline(in,line)){
// how to make 'line' only available inside of 'while' ?
}
Do-while 循环不适用于第一次迭代:
std::ifstream in("some_fule.txt");
do{
std::string line;
// line will be empty on first iteration
}while(getline(in,line));
当然,一个人总是可以有一个if(line.empty()) getline(...)
,但这并不真正感觉对。我还想过滥用逗号运算符:
while(string line, getline(in,line)){
}
但这不起作用,MSVC 告诉我这是因为line
不能转换为 bool。通常,以下顺序
statement-1, statement-2, statement-3
应该是类型type-of statement-3
(不考虑重载operator,
)。我不明白为什么那个不起作用。有任何想法吗?