我无法理解为什么在函数后打印换行符(std::endl
或\n
)会getline
显示意外行为。让我在下面的代码和输入文本文件之后描述问题:
代码:
int main()
{
std::string filename("./text_file.txt");
std::ifstream input_file;
input_file.open(filename);
std::string line;
while (getline(input_file, line, '-'))
{
std::cout << line << std::endl;
getline(input_file, line, '-');
std::cout << line << std::endl;
std::cout << std::endl;
}
input_file.close();
}
输入文本文件(text_file.txt
):
kc-qy
qy-FN
kc-ZP
end-FN
我打算做的是
- 获取输入文件,
- 在不同的行上打印由连字符连接的字母,(
getline(input_file, line, '-')
) - 在你对输入文件的下一行做同样的事情之前,放一个换行符 (
std::cout << std::endl
)。
简而言之,我期望打印的代码是
kc
qy
qy
FN
kc
ZP
end
FN
而我得到:
kc
qy
qy
FN
kc
ZP
end
FN
FN
我的理解是getline
逐行读取输入文本文件(好吧,函数的名称是get“line”),所以如果我把'-'
它作为分隔符,它应该用连字符分隔文本中的每一行。
任何帮助将不胜感激。
PS我是C ++的新手,因此除了解决方案之外的任何其他评论都将不胜感激(例如我应该使用std::endl
代替\n
,或关于代码设计等)