C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- è¾å ¥/è¾åºæçºµç¬¦
- std::showpoint, std::noshowpoint
- std::setprecision
- std::fixed, std::scientific, std::hexfloat, std::defaultfloat
- std::setbase
- std::showbase, std::noshowbase
- std::quoted
- std::boolalpha, std::noboolalpha
- std::dec, std::hex, std::oct
- std::setfill
- std::setw
- std::left, std::right, std::internal
- std::showpos, std::noshowpos
- std::uppercase, std::nouppercase
- std::ws
- std::ends
- std::skipws, std::noskipws
- std::flush
- std::endl
- std::flush_emit
- std::unitbuf, std::nounitbuf
- std::emit_on_flush, std::no_emit_on_flush
- std::resetiosflags
- std::setiosflags
- std::get_money
- std::get_time
- std::put_money
- std::put_time
- C 飿 ¼æä»¶è¾å ¥/è¾åº
- std::basic_streambuf
- std::basic_filebuf
- std::basic_stringbuf
- std::strstreambuf
- std::basic_syncbuf
- std::basic_ios
- std::basic_istream
- std::ios_base
- std::basic_osyncstream
- std::basic_ostream
- std::basic_iostream
- std::basic_ifstream
- std::basic_ofstream
- std::basic_fstream
- std::basic_istringstream
- std::basic_ostringstream
- std::basic_stringstream
- std::istrstream
- std::ostrstream
- std::strstream
- std::streamoff
- std::streamsize
- std::fpos
- std::iostream_category
- std::io_errc
- std::cin, std::wcin
- std::cout, std::wcout
- std::cerr, std::wcerr
- std::clog, std::wclog
- 注é
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >è¾å ¥/è¾åºåº >è¾å ¥/è¾åºæçºµç¬¦ > std::flush
std::flush
| å®ä¹äºå¤´æä»¶ <ostream>
|
||
| template< class CharT, class Traits > std::basic_ostream<CharT, Traits>& flush( std::basic_ostream<CharT, Traits>& os ); |
||
å¦å以è°ç¨ os.flush() å²å
¥è¾åºåºå os ã
è¿æ¯ä»
è¾åºç I/O æçºµç¬¦ï¼å¯ä»¥ç¨å¦ out << std::flush ç表达å¼å¯¹ä»»ä½ std::basic_ostream ç±»åç out è°ç¨ã
注æ
æ¤æçºµç¬¦å¯ç¨äºç«å³äº§çè¾åºçä¸å®æ´è¡ï¼ä¾å¦å¨ä»é¿æ¶é´è¿è¡çè¿ç¨æ¾ç¤ºè¾åºãè®°å½å¤ä¸ªçº¿ç¨çæ´»å¨æè®°å½å¯è½ä¸æå¾
å°å´©æºçç¨åºæ´»å¨æ¶ãè¥äº§ççè¿ç¨è¿è¡ä»»ä½å±å¹ I/O 大éï¼åè°ç¨ std::system å亦éè¦ std::cout çæ¾å¼å²å
¥ï¼å¸¸è§ä¾å为 Windows ä¸ç std::system("pause") ï¼ã夿°å
¶ä»é常çäº¤äº I/O åºæ¯ä¸ï¼ä½¿ç¨ std::cout æ¶ std::endl æ¯åä½çï¼å ä¸ºä»»ä½æ¥èª std::cin çè¾å
¥ãå° std::cerr çè¾åºæç¨åºç»æ¢å¼ºå¶è°ç¨ std::cout.flush() ã
éè¦å²å ¥å®æ´è¡æ¶ï¼å¯ä½¿ç¨ std::endl æçºµç¬¦ã
æ¯æ¬¡è¾åºæä½é½éè¦å²å ¥æ¶ï¼å¯ä½¿ç¨ std::unitbuf æçºµç¬¦ã
åæ°
| os | - | å°è¾åºæµçå¼ç¨ |
è¿åå¼
os ï¼å°æçºµåçæµçå¼ç¨ï¼
示ä¾
没æ std::flush ï¼è¾åºç¸åï¼ä½å¯è½ä¸å®æ¶åºç°ã
#include <iostream> #include <chrono> template<typename Diff> void log_progress(Diff d) { std::cout << "..(" << std::chrono::duration_cast<std::chrono::milliseconds>(d).count() << " ms).." << std::flush; } int main() { volatile int sink=0;  auto t1 = std::chrono::high_resolution_clock::now(); for(int j=0; j<5; ++j) { for(int n=0; n<10000; ++n) for(int m=0; m<20000; ++m) sink += m*n; // åä¸äºå·¥ä½ auto now = std::chrono::high_resolution_clock::now(); log_progress(now - t1); } std::cout << '\n'; }
å¯è½çè¾åºï¼
..(450 ms)....(901 ms)....(1350 ms)....(1800 ms)....(2250 ms)..
åé
| æ§å¶æ¯å¦æ¯æ¬¡æä½å岿´è¾åº (彿°) | |
| è¾åº '\n' 并岿´è¾åºæµ (彿°æ¨¡æ¿) | |
| ä¸åºå±åå¨è®¾å¤åæ¥ ( std::basic_ostream<CharT,Traits> çå
¬å¼æå彿°) |