В моей программе fin
является объектом ifstream
, а song
является string
.C++: getline() игнорирование первых нескольких символов
Когда программа запускается, она открывает music.txt и читает из файла. Я стараюсь читать каждую строку с помощью: getline(fin,song);
Я пробовал все варианты getline
, но он игнорирует первые 10 или около того символов каждой строки до того, как начнет собирать символы. Например, если название песни - «songongsongsongsongname», это может только подобрать «имя песни».
Любые идеи?
Вот упрощенный код:
void Playlist::readFile(ifstream &fin, LinkedList<Playlist> &allPlaylists, LinkedList<Songs*> &library)
{
string song;
fin.open("music.txt");
if(fin.fail())
{
cout << "Input file failed. No saved library or playlist. Begin new myTunes session." << endl << endl;
}
else
{
while(!fin.eof() && flag)
{
getline(fin, song);
cout << song << "YES." << endl;
}
.....}
сообщение минимальный компилируемый источник. Также обратите внимание, что так много проверок обычно не требуется: 'while (getline (fin, song)) {...}' достаточно хорошо. – dirkgently
Ну, ваша переменная 'flag' не установлена. –
Я взял инициализацию «flag», когда вы упрощаете код. Это должно быть правдой. Вы видите что-то не так с синтаксисом getline/use выше? – Gabe