gpt4 book ai didi

c++ - 如何使 'string line' 与 'getline(in,line)' 循环中的 'while(getline(...))' 在同一范围内?

转载 作者:太空狗 更新时间:2023-10-29 23:37:33 28 4
gpt4 key购买 nike

例子:

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,)。我不明白为什么那个不起作用。有什么想法吗?

最佳答案

你可以稍微作弊,只做一个多余的 block :

{
std::string line;
while (getline(in, line)) {
}
}

这在技术上不是“相同的范围”,但只要外部 block 中没有其他内容,它就是等价的。

关于c++ - 如何使 'string line' 与 'getline(in,line)' 循环中的 'while(getline(...))' 在同一范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247180/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com