我想打印存储在单个字符串中的项目列表。我不知道为什么跳过最后一项!
你知道为什么吗?
#include <iostream>
#include <string>
int main() {
std::string string_test{"Item1nItem2nItem3"};
std::cout << string_test;
return 0;
}
输出为:
Item1
Item2
这是QNX 7.0.3版本上的行缓冲流输出中报告的一个错误。
源
在POSIX 2017下,C++实现不需要在程序终止时刷新程序的标准输出1。你的没有。你需要手动操作:
#include <iostream>
#include <string>
int main()
{
std::string string_test{"Item1nItem2nItem3"};
std::cout << string_test << std::flush;
}
1)
开放式群组基础规范2018年第7期
根据ISO C标准的要求,使用来自
main()
的返回与使用返回值调用exit()
具有相同的行为(除了语言范围问题)。到达main()
函数的末尾具有与调用exit(0)
相同的行为。[…]
_Exit()
和_exit()
函数不应调用在atexit()
中注册的函数,也不应调用任何注册的信号处理程序[选项启动]不得冲洗开放流[Option End]打开的流是否关闭(不冲洗)由实现定义。最后,调用过程应终止,其后果如下所述。
如果可以使用std::cerr
而不是std::cout
,则在std::cerr
上,刷新是自动
#include <iostream>
#include <string>
int main()
{
std::string string_test{"Item1nItem2nItem3"};
std::cerr << string_test;
return 0;
}