c++ - 如何从 C++ 中的文件流中检测行的结尾

标签 c++ csv stream getline file-io

我有 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/

相关文章:

c++ - QThread 发出 finished() 信号但 isRunning() 返回 true 而 isFinished() 返回 false

python - 来自单个 CSV 文件源的多个列表理解

java - 使用 Swizzle Stream 替换流中的字符串

java - 在socket和serversocket之间打开多个流

c++ - c/c++中的进程间通信

c++ - 无法将着色器发送到 GPU 内存

python - 将两个脚本合并为一个新脚本(将列附加到 csv)

python - 为 CSV 文件附加标题?

c# - 字符串转二进制[]

c++ - C++字数统计程序