getline(file,line)正在跳过行--C ++

时间:2016-09-01 14:22:08

标签: c++ getline ofstream

我从一个文件中取出内容并将它们转移到另一个文件中。特别是,我正在寻找包含子串" LIBOR / Swap"的行。但是,这是无关紧要的,我已将它们评论出来。因此,此特定代码实际上将每行放在一个.csv文件(文件)中,并将它们传输到另一个.csv文件(temp)。

问题是转移会跳过线路。请参阅附图,了解它在传输数据时跳过的行。

original file

new file

正如您所看到的,通过第一个美元LIBOR /交换行,它会跳过 1天费率。这发生在整个代码的其他地方。

有什么理由为什么?感谢。

ifstream file;
ofstream temp;

file.open("YC Rate Levels.csv");
temp.open("Temp.csv");

if (file.is_open())
{
    string line;
    string test = "LIBOR/Swap";

    while (getline(file, line))
    {
          getline(file, line);
        //if(line.find(test) != string::npos)
        //{
            temp << line << endl;
        //}
    }

    temp.close();
    file.close();

} else cout << "File did not open.";

std::cin.clear();
std::cin.ignore(32767, '\n'); 
std::cin.get(); 

}

1 个答案:

答案 0 :(得分:1)

你正在调用getline(文件,行)两次 - 一次在while()标题内,然后再在body体内。删除第二个。