我有下面的代码:如何获得std :: endl在必要时输出“ r n”?
std::cerr << "Hello" << std::endl;
std::cerr << "World" << std::endl;
...这通常是巨大的。
但:我在一个Erlang的port程序中运行它,而Erlang已经完成了......终端意味着“\ n”不再转换为CRLF,这意味着我的输出显示as ...
Hello
World
Erlang做了什么我的终端?我如何检测它?在这种情况下,我如何获得std::endl
以输出\r\n
?
注意:它可能(可能)不仅仅是Erlang从我的程序中摄取stderr并搞砸了换行符。如果我在NIF中使用plain-ol'printf("Hello\n")
,我会看到同样的问题。
我假设Erlang将终端设置为CBREAK模式有一个很好的理由,所以我不想设置它(可能会打破Erlang的输出)。如何检测模式?有了这个,我可以发明'我的:: endl'并做正确的事情... –
@RogerLipscombe - 我编辑了评论我删除到我的答案,因为它回答“我如何检测它?”你的问题的一部分。 – Omnifarious
“CBREAK可让您在输入字符时获取每个角色。” - 这就是为什么Erlang把它放在这种模式下。它默认运行REPL。 –