4 回答
TA貢獻1817條經驗 獲得超6個贊
std::endl'\n''\n'std::endl.
TA貢獻1848條經驗 獲得超10個贊
std::cout << std::endl;
std::cout << '\n' << std::flush;
使用 std::endl如果要強制立即刷新輸出,請執行以下操作。 使用 \n如果您擔心性能(如果您使用的是 <<(操作員)
\nstd::endl
\nstd::cinstd::cout
TA貢獻1869條經驗 獲得超4個贊
我記得在標準中讀到過這方面的內容,下面是這樣說的:
參見C11標準,它定義了標準流的行為方式,因為C+程序與CRT接口,C11標準應該在這里控制沖洗策略。
ISO/IEC 9899:201X
7.21.3§7
在程序啟動時,三個文本流是預先定義的,不需要顯式打開-標準輸入(用于讀取常規輸入)、標準輸出(用于寫入常規輸出)和標準錯誤(用于寫入診斷輸出)。在最初打開時,標準錯誤流沒有被完全緩沖;標準輸入流和標準輸出流被完全緩沖當且僅當可以確定該流不引用交互設備時。
7.21.3§3
當流未緩沖時,字符將盡快從源或目的地出現。否則,字符可以作為塊累積和傳輸到或從主機環境中傳輸。當流被完全緩沖時,當緩沖區被填充時,字符將作為塊傳送到或從主機環境中傳輸。當流被緩沖時,當遇到新行字符時,字符將作為塊傳送到或從主機環境中傳輸。此外,當緩沖區被填充時,當輸入被請求到非緩沖流時,或者在需要從主機環境傳輸字符的行緩沖流上請求輸入時,字符打算作為塊傳輸到主機環境。對這些特性的支持是實現定義的,并且可能通過setbuf和setvbuf函數受到影響。
這意味著std::cout和std::cin全緩沖當且僅當他們指的是一種非交互式設備。換句話說,如果stdout連接到終端,那么行為就沒有區別。
但是,如果std::cout.sync_with_stdio(false)被調用,那么'\n'即使對交互設備也不會造成同花順。
- 4 回答
- 0 關注
- 779 瀏覽
添加回答
舉報
