我学会使用之前c++
和python
的经验R
进行编程。我说我理解循环很好,但现在我发现我不知道关于它们的问题。这是一段代码。
for (int i = 0; i != 1; ){
string name;
getline(infile, name);
if (name == end_input){
i = 1;
}
else{
names.push_back(name);
}
}
整个程序应该(并且确实)从文件name
中读取名称(infile
)并将它们存储到names
字符串中。比我希望他们存储在另一个文件中。当我查看代码时,我会c++
执行以下操作:
创建整数i
并将其设置为0
创建字符串名称
从infile
读取行并将此行存储到names
字符串向量中。
除非name == end_input
由此我会说c++
会一次又一次地在input
文件中存储第一行,因为我没有告诉他在getline
第一行之后跳转到下一行。但是程序按照作者的预期逐行读取该文件中的所有名称。怎么可能?
谢谢。
答案 0 :(得分:2)
getline
在读取一行后自动移动到下一行。
同样,do while
循环可能会更好地满足您的目的。
答案 1 :(得分:1)
如果内置函数的行为与预期不符,则逻辑下一步应该是检查Documentation。如果您这样做,您将看到以下内容:
从is中提取字符并将它们存储到str中,直到找到定界字符delim(或换行符,'\ n',for(2))。
如果到达文件末尾或者在输入操作期间发生其他错误,则提取也会停止。
如果找到分隔符,则将其提取并丢弃(即不存储它,下一个输入操作将在其后开始)。
哪个回答你的问题。