4 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
std::endl
'\n'
'\n'
std::endl
.

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
std::cout << std::endl;
std::cout << '\n' << std::flush;
使用 std::endl
如果要強(qiáng)制立即刷新輸出,請(qǐng)執(zhí)行以下操作。 使用 \n
如果您擔(dān)心性能(如果您使用的是 <<
(操作員)
\n
std::endl
\n
std::cin
std::cout

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
我記得在標(biāo)準(zhǔn)中讀到過(guò)這方面的內(nèi)容,下面是這樣說(shuō)的:
參見(jiàn)C11標(biāo)準(zhǔn),它定義了標(biāo)準(zhǔn)流的行為方式,因?yàn)镃+程序與CRT接口,C11標(biāo)準(zhǔn)應(yīng)該在這里控制沖洗策略。
ISO/IEC 9899:201X
7.21.3§7
在程序啟動(dòng)時(shí),三個(gè)文本流是預(yù)先定義的,不需要顯式打開(kāi)-標(biāo)準(zhǔn)輸入(用于讀取常規(guī)輸入)、標(biāo)準(zhǔn)輸出(用于寫(xiě)入常規(guī)輸出)和標(biāo)準(zhǔn)錯(cuò)誤(用于寫(xiě)入診斷輸出)。在最初打開(kāi)時(shí),標(biāo)準(zhǔn)錯(cuò)誤流沒(méi)有被完全緩沖;標(biāo)準(zhǔn)輸入流和標(biāo)準(zhǔn)輸出流被完全緩沖當(dāng)且僅當(dāng)可以確定該流不引用交互設(shè)備時(shí)。
7.21.3§3
當(dāng)流未緩沖時(shí),字符將盡快從源或目的地出現(xiàn)。否則,字符可以作為塊累積和傳輸?shù)交驈闹鳈C(jī)環(huán)境中傳輸。當(dāng)流被完全緩沖時(shí),當(dāng)緩沖區(qū)被填充時(shí),字符將作為塊傳送到或從主機(jī)環(huán)境中傳輸。當(dāng)流被緩沖時(shí),當(dāng)遇到新行字符時(shí),字符將作為塊傳送到或從主機(jī)環(huán)境中傳輸。此外,當(dāng)緩沖區(qū)被填充時(shí),當(dāng)輸入被請(qǐng)求到非緩沖流時(shí),或者在需要從主機(jī)環(huán)境傳輸字符的行緩沖流上請(qǐng)求輸入時(shí),字符打算作為塊傳輸?shù)街鳈C(jī)環(huán)境。對(duì)這些特性的支持是實(shí)現(xiàn)定義的,并且可能通過(guò)setbuf和setvbuf函數(shù)受到影響。
這意味著std::cout
和std::cin
全緩沖當(dāng)且僅當(dāng)他們指的是一種非交互式設(shè)備。換句話說(shuō),如果stdout連接到終端,那么行為就沒(méi)有區(qū)別。
但是,如果std::cout.sync_with_stdio(false)
被調(diào)用,那么'\n'
即使對(duì)交互設(shè)備也不會(huì)造成同花順。
- 4 回答
- 0 關(guān)注
- 742 瀏覽
添加回答
舉報(bào)