下面的代码片段是打印单词的第一个字母而不是整个单词。但是当我调试它时,我看到包含整个单词的数据数组。任何人都可以解释原因。
vector<string> data;
vector.resize(x);
for(int i=0; i<x; i++)
{
infile.getline(&data[i][0],32,'\n');
cout<<data[i];
if(infile.fail()) break;
}
答案 0 :(得分:0)
您超出了字符串的范围。 data[i]
是一个空字符串,写&data[i][0]
会导致未定义的行为。
代码可以替换为:
for (int i = 0; i < x; i++)
{
if ( !getline(infile, data[i]) )
break;
if ( data[i].size() > 32 )
data[i].resize(32);
cout << data[i];
}
请注意,这也会修复输入失败后再次执行cout << data[i];
的错误。