C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- 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::basic_streambuf
std::basic_streambuf
| å®ä¹äºå¤´æä»¶ <streambuf>
|
||
| template< Â Â class CharT, |
||
ç±» basic_streambuf æ§å¶å符åºåçè¾å
¥ä¸è¾åºãå®å
å«ä¸åå
容并æä¾å°å®ä»¬ç访é®ï¼
- åæ§å¶å符åºåï¼å称为ç¼å²åºï¼å®å¯å«æä¸ºè¾å ¥æä½ç¼å²çè¾å ¥åºåï¼å称为è·ååºï¼ï¼å/æä¸ºè¾åºæä½ç¼å²çè¾åºåºåï¼å称为æ¾ç½®åºï¼ã
- å ³èå符åºåï¼åç§°ä½æºï¼å¯¹äºè¾å ¥ï¼ææ± ï¼å¯¹äºè¾åºï¼ãå®å¯ä»¥æ¯éè¿ OS API 访é®çå®ä½ï¼æä»¶ã TCP æ¥å¤´ã串è¡ç«¯å£ãå ¶ä»å符设å¤ï¼ï¼æè å¯ä»¥æ¯è½è½¬è¯æåç¬¦æºææ± çå¯¹è±¡ï¼ std::vector ãæ°ç»ãå符串åé¢éï¼ã
I/O æµå¯¹è±¡ std::basic_istream å std::basic_ostream ï¼è¿ææææ´¾çèªå®ä»¬çå¯¹è±¡ï¼ std::ofstream ã std::stringstream çï¼ï¼é½å®å ¨ä»¥ std::basic_streambuf å®ç°ã
åæ§å¶å符åºåæ¯ CharT çæ°ç»ï¼å®å¨æææ¶åé½è¡¨ç¤ºååºåï¼æå¯¹çå
³èå符åºåçâçªâãå
¶ç¶æä»¥ä¸ä¸ªæéæè¿°ï¼
- èµ·å§æé ï¼å§ç»æåç¼å²çæä½å ç´
- ä¸ä¸ä½ç½®æé ï¼æå读æåçä¸ä¸ªåéå ç´
- ç»æ¢æé ï¼æåç¼å²åºå°¾åä¸ä¸ªä½ç½®ã
basic_streambuf å¯¹è±¡å¯æ¯æè¾å
¥ï¼è¯¥æ
åµä¸èµ·å§ãä¸ä¸ä½ç½®åç»æ¢æéææè¿°çåºå被称为è·ååºï¼ãè¾åºï¼æ¾ç½®åºï¼ï¼æåæ¶è¾å
¥ä¸è¾åºã卿åä¸ç§æ
åµä¸ï¼è·è¸ªå
个æéï¼å®ä»¬å¯è½å
¨é¨æåå䏿°ç»çå
ç´ ï¼ææåäºä¸ªåç¬æ°ç»çå
ç´ ã
è¥æ¾ç½®åºä¸ä¸ä¸ä½ç½®æéå°äºç»æ¢æéï¼ååä½ç½®å¯ç¨ãä¸ä¸ä½ç½®æéå¯è¢«è§£å¼ç¨åèµå¼ã
è¥è·ååºä¸ä¸ä¸ä½ç½®æéå°äºç»æ¢æéï¼å读ä½ç½®å¯ç¨ãä¸ä¸ä½ç½®æéå¯è¢«è§£å¼ç¨å读åã
è¥è·ååºä¸ä¸ä¸ä½ç½®æé大äºèµ·å§æéï¼ååæ¾ä½ç½®å¯ç¨ï¼èä¸ä¸ä½ç½®æéå¯ä»¥è¢«èªåå¹¶èµå¼ï¼ä»¥å°å符æ¾åå°è·ååºã
åæ§å¶åºåä¸çå符表示åç¼ç å¯ä»¥å¼äºå ³èåºåä¸çå符表示ï¼è¯¥æ åµä¸å ¸åå°ç¨ std::codecvt æ¬å°ç¯å¢è¿è¡è½¬æ¢ã常è§çä¾åæ¯éè¿ std::wfstream å¯¹è±¡è®¿é® UTF-8 ï¼æå ¶ä»å¤åèç¼ç ï¼æä»¶ï¼åæ§å¶å符åºåç± wchar_t åç¬¦ç»æï¼ä½å ³èåºåç±åèç»æã
std::basic_streambuf åºç±»çå
¸åå®ç°åªä¿æå
个 CharT* æéåä¸ä¸ª std::locale 坿¬ä½ä¸ºæ°æ®æåãå¦å¤ï¼å®ç°å¯ä»¥ä¿æç¼åç locale å¹³é¢ï¼å¡å¨è°ç¨ imbue() æ¶éæ³åå®ãå
·ä½çç¼å²ç±»ï¼å¦ std::basic_filebuf æ std::basic_stringbuf æ´¾çèª std::basic_streambuf ã
æ ååºæä¾äºä¸ªä¾¿å© typedef
| å®ä¹äºå¤´æä»¶
<streambuf> | |
| Â | |
| ç±»å | å®ä¹ |
streambuf
|
basic_streambuf<char> |
wstreambuf
|
basic_streambuf<wchar_t> |
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
char_type
|
CharT |
traits_type
|
Traits ï¼è¥ Traits::char_type 䏿¯ CharT åç¨åºä¸ºè°¬æã |
int_type
|
Traits::int_type |
pos_type
|
Traits::pos_type |
off_type
|
Traits::off_type |
æå彿°
| [è] |
ææ basic_streambuf 对象 (èå ¬å¼æå彿°) |
æ¬å°ç¯å¢ | |
| è°ç¨ imbue() (å ¬å¼æå彿°) | |
| è·å¾ç¸å
³æ¬å°ç¯å¢ç坿¬ (å ¬å¼æå彿°) | |
å¯»ä½ | |
| è°ç¨ setbuf() (å ¬å¼æå彿°) | |
| è°ç¨ seekoff() (å ¬å¼æå彿°) | |
| è°ç¨ seekpos() (å ¬å¼æå彿°) | |
| è°ç¨ sync() (å ¬å¼æå彿°) | |
è·ååº | |
| è·å¾è·ååºä¸ç«å³å¯ç¨çåç¬¦æ° (å ¬å¼æå彿°) | |
| 令è¾å
¥åºååè¿ï¼è¯»åä¸ä¸ªå符èä¸å次åè¿ (å ¬å¼æå彿°) | |
| ä»è¾å
¥åºå读åä¸ä¸ªå符并令åºååè¿ (å ¬å¼æå彿°) | |
| stossc (C++98 ä¸å¼ç¨)(C++17 ä¸ç§»é¤) |
令è¾å
¥åºååè¿ï¼å¦åéè¿è°ç¨ sbumpc() å¹¶èå¼ç»æ (å ¬å¼æå彿°) |
| ä»è¾å
¥åºå读åä¸ä¸ªå符ï¼èä¸ä»¤åºååè¿ (å ¬å¼æå彿°) | |
| è°ç¨ xsgetn() (å ¬å¼æå彿°) | |
æ¾ç½®åº | |
| åä¸ä¸ªåç¬¦å°æ¾ç½®åºåï¼å¹¶ä»¤ next æéåè¿ (å ¬å¼æå彿°) | |
| è°ç¨ xsputn() (å ¬å¼æå彿°) | |
åæ¾ | |
| å¨è¾å
¥åºå䏿¾åä¸ä¸ªå符 (å ¬å¼æå彿°) | |
| åç§»ä¸ä½è¾åºåºåä¸çä¸ä¸ä½ç½®æé (å ¬å¼æå彿°) | |
åä¿æ¤æå彿° | |
| æé basic_streambuf 对象 (åä¿æ¤æå彿°) | |
| (C++11) |
æ¿æ¢ basic_streambuf 对象 (åä¿æ¤æå彿°) |
| (C++11) |
交æ¢äºä¸ª basic_streambuf 对象 (åä¿æ¤æå彿°) |
æ¬å°ç¯å¢ | |
| [è] |
æ´æ¹å
³èçæ¬å°ç¯å¢ (èåä¿æ¤æå彿°) |
å¯»ä½ | |
| [è] |
è¥å®¹è®¸åä»¥ç¨æ·å®ä¹æ°ç»æ¿æ¢ç¼å²åº (èåä¿æ¤æå彿°) |
| [è] |
ç¨ç¸å¯¹å¯»åéå®ä½è¾å
¥åºåãè¾åºåºåæä¸¤è
ä¸çä¸ä¸ä½ç½®æé (èåä¿æ¤æå彿°) |
| [è] |
ç¨ç»å¯¹å¯»åéå®ä½è¾å
¥åºåãè¾åºåºåæä¸¤è
ä¸çä¸ä¸ä½ç½®æé (èåä¿æ¤æå彿°) |
| [è] |
å°ç¼å²ä¸å
³èçå符åºå忥 (èåä¿æ¤æå彿°) |
è·ååº | |
| [è] |
è¥å·²ç¥ï¼åè·å¾å
³èè¾å
¥åºåä¸å¯ç¨äºè¾å
¥çåç¬¦æ° (èåä¿æ¤æå彿°) |
| [è] |
ä»å
³èè¾å
¥åºå读åå符å°è·ååº (èåä¿æ¤æå彿°) |
| [è] |
ä»è¾å
¥åºå读åå符å°è·ååºï¼å¹¶ä»¤ä¸ä¸ä½ç½®æéåè¿ (èåä¿æ¤æå彿°) |
| [è] |
ä»è¾å
¥åºå读åå¤ä¸ªå符 (èåä¿æ¤æå彿°) |
| è¿åæåè·ååºèµ·å§ãå½ååç¬¦åæ«å°¾çæé (åä¿æ¤æå彿°) | |
| 令è¾åºåºåä¸çä¸ä¸ä½ç½®æéåè¿ (åä¿æ¤æå彿°) | |
| éå®ä½è¾åºåºåçèµ·å§ãä¸ä¸ä½ç½®åç»æ¢æé (åä¿æ¤æå彿°) | |
æ¾ç½®åº | |
| [è] |
å°å¤ä¸ªå符åå°è¾åºåºå (èåä¿æ¤æå彿°) |
| [è] |
仿¾ç½®åºåå
¥å符å°å
³èçè¾åºåºå (èåä¿æ¤æå彿°) |
| è¿åæåæ¾ç½®åºçèµ·å§ãå½ååç¬¦åæ«å°¾çæé (åä¿æ¤æå彿°) | |
| 令è¾åºåºåä¸çä¸ä¸ä½ç½®æéåè¿ (åä¿æ¤æå彿°) | |
| éå®ä½è¾åºåºåçèµ·å§ãä¸ä¸ä½ç½®åç»æ¢æé (åä¿æ¤æå彿°) | |
åæ¾ | |
| [è] |
å°å符æ¾åè¾å
¥åºåï¼å¯è½ä¿®æ¹è¾å
¥åºå (èåä¿æ¤æå彿°) |