提问人:kaiyu wei 提问时间:1/13/2022 更新时间:1/13/2022 访问量:696
getline() 如何在循环中读取多行文件?
how does getline() read a multiple-line file in loops?
问:
我对 std::getline 函数的使用有些困惑。请参见以下代码:
#include <sstream>
#include <string>
std::ifstream ifs(filename);
std::string line;
while (std::getline(ifs, line))
{
//...//
}
for ( std::string s; getline(ifs, s)){
//...//
}
对于 while 循环和 for 循环,似乎每次在新的迭代中,“geline”都会读取一个新行,例如,如果我们有一个文件存储:
1 2
3 4
5 6
然后在第一次迭代中,getline 读取 ,然后在下一次迭代中...那么,当迭代开始时,它如何知道它应该从哪一行开始读取呢?1 2
3 4
答:
2赞
Dúthomhas
1/13/2022
#1
文件流是字节(“字符”)的来源。每次从文件中读取一个字符时,文件获取指针都会前进到下一个要读取的字符。
也就是说,每次阅读时,您都会得到下一个未读字符。
std::getline()
只需读取字符,直到它获得分隔符值(默认情况下)。因此,每次调用 getline() 都会获得文件中的下一行。'\n'
评论
ifs
ifstream