Функция getline () в visual studio 2012 работает по-другому, напрямую переходя на последнюю строку

это первый раз, когда я использую 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-файле.
Я не могу выяснить, что может делать это. Помогите мне, пожалуйста.
Благодарю.

3

Решение

Конечно, он будет печатать только последнюю строку, прочитанную из файла, потому что cout печатает вне цикла и печатает последнюю строку после прочтения ВСЕХ строк.

Вы должны написать это вместо:

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

Другие решения

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

Ваш cout находится за пределами цикла, поэтому вы будете печатать только последнюю строку.

1

По вопросам рекламы [email protected]