我有 csv 文件输入,我在其中读取了多行,其中包含与该行相关的多个字段。如何编写一个循环,从 csv 文件中读取一行文本,然后一直循环直到到达该行的末尾。此 while 循环将嵌套在 !infile.eof while 循环中。这是我目前所拥有的,但并不完全有效。
while (getline(infile, currentline))
{
getline(infile, ID, ',');
getline(infile, Name, ';');
Person p = new Person(ID, Name);
}
csv 文件中的一行如下所示: 111,詹姆斯; 222,琳达; 333、卢克;
每行代表一个教室,因此会有多行。
最佳答案
试试这个:
while (getline(infile, currentline))
{
std::istringstream line{currentline};
if(getline(line, ID, ',') && getline(line, Name, ';'))
Person p = new Person(ID, Name);
}
This while loop would be nested in an !infile.eof while loop.
作为旁注,永远不要迭代 while( !infile.eof() )
- 这几乎可以保证是一个错误。输入流有多个失败条件(eof、读取失败等)。
您应该简单地将流转换为 bool 值以进行检查。
关于c++ - 如何从 C++ 中的文件流中检测行的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754341/