在我的程序中,fin
是ifstream
對象,而song
是string
。C++:getline()忽略前幾個字符
當程序運行時,它會打開music.txt並從文件中讀取。我嘗試閱讀以下各行:getline(fin,song);
我試過getline
的所有變體,但在開始拾取字符之前,它會一直忽略每行的前10個字符。例如,如果歌曲名稱是「songsongsongsongsongname」,它可能只會選擇「歌名」。
任何想法?
這裏的簡化代碼:
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 2010-03-10 23:33:36
那麼,你的'flag'變量沒有設置。 – 2010-03-10 23:34:00
簡化代碼時,我將「標誌」初始化出來了。這應該是真的。 您是否發現getline語法/使用上面的任何錯誤? – Gabe 2010-03-11 00:05:16