2014-04-09 101 views
1

我有打開填充像這樣的文件:C++文件IO函數getline不拉弦

STRING

INT

INT

INT

文件名。 txt

STRING

INT

INT

INT

filename1.txt

諸如此類

我有一個應該從文件中讀取,拉弦的代碼中,整數和文件名。它能夠拉取字符串和整數,但不會拉取文件名。

下面是代碼:

while(!input.eof()) 
{ 
    string name; 
    int type = UNKNOWN; 
    int pages; 
    float ounces; 
    getline(input, name); 
    input >> type >> pages >> ounces; 
    getline(input, reviewFile); //reviewFile is a static string called in the header file 
    input.ignore(INT_MAX, '\n'); 
} 
+0

嘗試一個額外的函數getline。在盎司仍然在輸入緩衝區之後,你可能已經換行了。 –

+0

或者只是輸入>>類型>>頁面>>盎司>> ws' ... – Massa

+0

請按照http://meta.stackexchange.com/questions/5234/how-does-accepting-an-答案工作 – lpapp

回答

0

操作>>將讀取的話,不是錄取線的一端插入考慮那麼多。

因此,我會寫這樣的事情(如馬薩在評論中寫道):

input >> type >> pages >> ounces >> ws; 

而且,請注意,「EOF」檢查是最理想的。儘量避免它們。此外,如果還有更多內容需要閱讀,則不要在循環內檢查內容。

0

如果你把ignore,則對getline前,吃盎司之後的換行符它應該工作:

while(!input.eof()) 
{ 
    string name; 
    int type = UNKNOWN; 
    int pages; 
    float ounces; 
    getline(input, name); 
    input >> type >> pages >> ounces; 
    input.ignore(INT_MAX, '\n'); 
    getline(input, reviewFile); //reviewFile is a static string called in the header file 
}