我有下面的代碼:如何獲得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。 –