C ++ Getline& seekg

时间:2013-06-06 08:57:21

标签: c++

我编写了一个C ++程序,我有多个CSV文件用作输入,我一次打开一个并在将数据提取到输出文件后关闭它,这是唯一的文件。

我运行getline(inFile,line); outFile<< line<< ENDL;

我运行此代码,只有少数文件在大约200-300行后突然输出,并且在我的输出CSV文件中有一个大的空格

但是当我在循环中减慢代码(如系统(“Pause”))时,我可以完美地提取我想要的内容....

我的程序是否正在快速运行,为什么getline会跳过我想要的部分内容?

我真的不知道问题来自哪里,或者从哪里开始

非常感谢!

if (dataname[i] == dataname)
{
    inFile.seekg(datalength[i], ios::beg);
    for (int j = 0; j < datacount[i]; j++)
    {
        getline(inFile, line);
        outFile << line << endl;
    }

}

1 个答案:

答案 0 :(得分:1)

请参阅Why seekg does not work with getline?

在seekg(pos)调用之前添加clear()调用,以清除可能由getline(inFile,line)调用创建的所有错误标志。

inFile.clear();  // Clears all error flags.
inFile.seekg(pos);