Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用getline时哪种方式更好?_C++_C++11 - Fatal编程技术网

C++ 使用getline时哪种方式更好?

C++ 使用getline时哪种方式更好?,c++,c++11,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; } ifstream-fin(“data.txt”); const int

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

方式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;
}
ifstream-fin(“data.txt”);
const int LINE_LENGTH=100;
字符str[行长度];
while(fin.getline(str,LINE_长度))
{    
cout方式2更好(更惯用,避免可能破坏解析的硬编码长度)

for(string s; getline(fin,s); )
{    
    cout << "Read from file: " << s << endl; 
}
for(字符串s;getline(fin,s);)
{    
cout方式2更好(更惯用,避免可能破坏解析的硬编码长度)

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

coutstd::getlineistream::getline来自不同的接口,接受不同类型的参数


特别是对于您的情况,我同意使用std::getline(fin,s)std::getlineistream::getline来自不同的接口并接受不同类型的参数更为方便


特别是对于您的情况,我同意使用std::getline(fin,s)更方便< 1】使用魔法数字,所以2路。他们做不同的事情。你经常想要使用2路,因为你不在乎长度,你只想提取分隔符。苹果和橘子分开的数据。方式2更习惯于C++。除非你有充分的理由,否则就用它。你所显示的第一种方式大多是ReleR。在
std::string
发明之前的几天里,ic就已经出现了。今天我能想象的唯一使用它的方法是,如果我需要为一些根本不支持第二种方式的古老编译器编写代码。@Jerry Coffin way 1(有限行长)确实可以防止恶意用户在试图入侵系统时进入一个大行。@chux:限制行长可能很有用,但如果/当你需要这样做时,有更好的方法可以做到。方法1使用幻数,方法2也一样。但是它们做的事情不同。你经常会想使用方法2,因为你不在乎长度你只想提取分隔符。苹果和橘子分开的数据。2路更习惯于C++。除非你有充分的理由,否则你会使用它。你所展示的第一种方法大部分是从代码前的几天开始的。根本不支持第二种方式的古编译器。@Jerry Coffin Way 1(有限的行长度)防止恶意用户在试图入侵系统时进入一个大的行。@chux:限制行长可能有用,但如果/当你需要这样做时,有比这更好的方法。为什么在这里使用for循环?@Adam Lee我想你指的是下面的答案,而不是我的。无论如何,我会说逻辑上也是这样做的ng-初始化;条件检查;增量(在本例中为空),尽管你可能会发现while循环字面上更有意义。为什么在这里使用for循环?@Adam Lee我想你指的是下面的答案,而不是我的答案。无论如何,我会说它在逻辑上做着相同的事情-初始化;条件检查;增量(在本例中为空),尽管您可能会发现while循环实际上更有意义。