使用getline时哪种方式更好?

时间:2014-08-19 00:28:07

标签: c++ c++11

从文件中读取时,我们有两种方法

方式1:

ifstream fin("data.txt"); 
const int LINE_LENGTH = 100; 
char str[LINE_LENGTH];  
while( fin.getline(str,LINE_LENGTH) )
{    
    cout << "Read from file: " << str << endl;
}

方式2:

ifstream fin("data.txt");  
string s;  
while( getline(fin,s) )
{    
    cout << "Read from file: " << s << endl; 
}

哪个更好?个人而言,我更喜欢way2,因为我不需要指定最大长度,你的意见是什么?

2 个答案:

答案 0 :(得分:2)

方式2更好(更惯用,避免可能破坏解析的硬编码长度)。我的写法略有不同:

for(string s; getline(fin,s); )
{    
    cout << "Read from file: " << s << endl; 
}

答案 1 :(得分:2)

std :: getline istream :: getline 来自不同的接口,并接受不同类型的参数。

特别是对于你的情况,我同意使用 std :: getline(fin,s)更方便。