2015-04-06 360 views
0

我似乎對文件輸入有一個基本的誤解。我認爲我的方法適用於我正在研究的項目,但它根本不適用。下面是代碼:用getline從文件中讀取輸入

#include <iostream> 

#include <fstream> 

#include <cstring> 

using namespace std; 

int main(){ 
    ifstream input; 
    char fname[20], lname[20]; 
    input.open("text.txt"); 

    input.getline(lname, 20, ','); 
    input.getline(fname, 20, ' '); 
    cout << lname; 
    cout << fname; 

} 

從一個文件中我有:

Squarepants, Spongebob 

和COUT語句不輸出任何東西

我做錯了嗎?

感謝

+0

假設文件實際上被打開(我的意思是你沒有提供任何細節,爲此,所以也許它沒有) ,並且讀取成功,[有輸出](http://coliru.stacked-crooked.com/a/fa9aa3ae6685a19a)。 – chris

+0

確保您的文件已成功打開。另外,請始終驗證讀取操作是否成功。 –

+0

@chris對不起,我只是想掀起我的實際項目的一個片段,並沒有包括錯誤檢查,只是爲了看看我能否在另一個環境中工作。我仍然沒有輸出,它可能是視覺工作室嗎? –

回答

1

這可能是一個很好的模式來使用:

std::string lineOfText; 

while(fileAccessor.good()) { 
    fileAccessor.getline(lineOfText); 
    // 
    // do stuff 
    // do stuff 
    // 
    if(fileAccessor.eof()) break; 
} 
+1

或者,刪除單獨的'good()'和'eof()'檢查,並使用'while(fileAccessor)'來代替。流有一個['operator bool()'](http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool),當流處於「bad」,「fail」或'eof'狀態。 –