2015-04-06 115 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'状态。 –