visual studio 2012中的getline()函数以不同的方式工作,直接跳到最后一行

时间:2012-12-25 12:18:44

标签: c++ csv getline sstream import-from-csv

这是我第一次使用getline(),我认为它有问题! 这是我的代码:

ifstream file ("new2.csv");
string val;
while (file.good())
{
    getline (file,val);
}
cout<<val;

并且输出始终是csv文件的最后一行,无论我在csv文件中有多少行。

我的csv文件是一个简单的分隔文件。像:

cat,dog,a,b,c,hello,world
monkey,flower,text,word

我认为getline应该读取csv文件的第一行,但在这种情况下,我的输出将是:monkey,flower,text,word

这会发生在csv文件中的任意行数。 我无法找出可能正在做的事情。请帮我。 感谢。

2 个答案:

答案 0 :(得分:2)

当然它只会打印从文件中读取的最后一行,因为cout在循环外打印并在读完所有行完成后打印最后一行。

你应该写这个:

ifstream file ("new2.csv");
string val;
while (file.good())
{
    getline (file,val);
    cout<< val << endl;
}

答案 1 :(得分:1)

while (file.good())
{
    getline (file,val);
}
cout<<val;

你的cout在循环之外,所以你只打印最后一行。

相关问题