【发布时间】:2013-10-01 19:34:09
【问题描述】:
我有一个以前从未遇到过的奇怪问题,我不知道是什么原因造成的。我在 Qt 4.7 中工作,我的项目中有很多东西可以打印到终端。这些打印都是由一键触发触发的。但是,当我按下按钮时,它们并没有全部打印出来。相反,所有以<< std::endl; 结尾的打印语句都将打印,但第一个以"random text...\n"; 结尾的语句不会打印,之后的任何语句都不会打印,无论它们使用哪种样式。如果我再次按下按钮以再次运行整个程序,它将然后打印剩余的语句,然后是与上次相同的初始输出。我可以将它们全部制作为 std::endl,但它们有很多 很多,所以我真的不想这样做。我以前从未见过这样的事情,有人对如何解决它有任何建议吗?谢谢!
编辑:根据请求,这是语法(假设 UI 上有一个按钮调用 mybutton)
void on_mybutton_pressed()
{
std::cout << "A" << std::endl;
std::cout << "B" << std::endl;
std::cout << "C\n";
}
第一次按下按钮后的输出:
A
B
第二次按下后的输出:
C
A
B
【问题讨论】:
-
请看你的代码
-
@dare 我会添加一个语法示例
-
@Pavel Windows,但我之前在 Qt 中使用过 \n 无数次,没有任何问题,我已经在其中工作了几个月,这是它第一次给我带来问题.
-
@Pavel Strakhov:那是错误的。在文本输出流(如
std::cout)中,\n会自动转换为适合目标平台的任何内容。例如。在 Windows 上,它将自动转换为\r\n序列。 -
@PavelStrakhov 嗯,这取决于你的编译器。 C 和 C++ 标准 don't require
\nto be translated to either CR or LF (or CR+LF).