ÀÔÃâ·Â ½ºÆ®¸²Àº C++ÀÌ ¶óÀ̺귯¸® Â÷¿ø¿¡¼ Á¦°øÇÏ´Â ±âº»ÀûÀÎ ÀÔÃâ·Â ¹æ¹ýÀ̸ç 25Àå¿¡¼ °£´ÜÇÑ »ç¿ë ¹æ¹ýÀ» ¼³¸íÇÑ ¹Ù ÀÖ´Ù. ÀÌ Àå¿¡¼´Â ÀÔÃâ·Â ½ºÆ®¸²ÀÇ »ó¼¼ÇÑ »ç¿ë ¹æ¹ý°ú ¿©·¯ °¡Áö ÀÔÃâ·Â ¿É¼Ç, ±×¸®°í ÆÄÀÏ ÀÔÃâ·Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¼ °ÍÀÌ´Ù. ÀÔÃâ·ÂÀº ¾ð¾îÀÇ °¡Àå ±âº»ÀûÀÎ ±â´ÉÀÓ¿¡µµ ºÒ±¸Çϰí ÀÌ Ã¥Àº µÞºÎºÐ¿¡¼ µû·Î ´Ù·ç°í Àִµ¥ ³ª¸§´ë·Î ÀÌÀ¯°¡ ÀÖ´Ù.
¿ì¼± ÄÜ¼Ö ÇÁ·ÎÁ§Æ®ÀÇ ½Ç¿ë¼ºÀÌ Å©°Ô ¶³¾îÁö±â ¶§¹®¿¡ ÀÔÃâ·Â ½ºÆ®¸²À» ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼ ¾µ ÀÏÀÌ °ÅÀÇ ¾ø°í ¼³»ç ÀÖ´Ù ÇÏ´õ¶óµµ cout°ú << ¿¬»êÀÚ¸¸ ¾Ë¸é ±âº»ÀûÀÎ ÀÔÃâ·ÂÀ» ÇÒ ¼ö ÀÖÀ¸¸ç ´ëüÇÒ ¼ö ÀÖ´Â ¹æ¹ýµéµµ ¸¹Àº ÆíÀÌ´Ù. ±×º¸´Ù ´õ Áß¿äÇÑ ÀÌÀ¯´Â C++ÀÇ ÀÔÃâ·Â ¹æ¹ýÀÌ »ý°¢º¸´Ù ÈξÀ ´õ º¹ÀâÇØ¼ ¹è¿ì±â ±î´Ù·Ó´Ù´Â Á¡ÀÌ´Ù. ÅÛÇø´ ±â¹ÝÀε¥´Ù C++ÀÇ °ÅÀÇ ¸ðµç ¹®¹ýµéÀ» ÃÑ µ¿¿øÇؼ ¸¸µé¾îÁ® Àֱ⠶§¹®¿¡ ³»ºÎ±îÁö ¼Ó¼ÓµéÀÌ ÀÌÇØÇϱâ´Â ¹«Ã´ ¾î·Æ´Ù. °Ô´Ù°¡ Ç¥ÁØ È®¸³ÀüÀÇ ¸¶±¸ÀâÀÌ½Ä È®ÀåÀ¸·Î ÀÎÇØ ÄÄÆÄÀÏ·¯¸¶´Ù µ¿ÀÛÀÌ Á¶±Ý¾¿ ´Þ¶óÁö±âµµ Çϰí ÇѰ¡Áö ÀÏÀ» Çϴµ¥ ¿©·¯ °¡Áö ¹æ¹ýµéÀÌ Á¸ÀçÇØ¼ °£°áÇÏÁöµµ ¾Ê´Ù.
CÀÇ printf¿Í ºñ±³ÇØ º¼ ¶§ ¾ÈÁ¤ÀûÀ̱â´Â ÇÏÁö¸¸ ÆíÀǼº¸é¿¡¼ ÈξÀ ´õ ¶³¾îÁö¸ç ¼º´É»óÀÇ ÀÌÁ¡µµ ¾ø´Ù. ÀÌ·± º¹ÀâÇÑ ÁÖÁ¦´Â C++À» ¸· ¹è¿ì±â ½ÃÀÛÇÏ´Â »ç¶÷µé¿¡°Ô Èï¹Ì¸¦ ÀÒ°Ô ¸¸µé À§ÇèÀÌ ÀÖ¾î °¡±ÞÀû µÚÂÊ¿¡ ¹èÄ¡Çß´Ù. ´çÀå ÀÌ ³»¿ëÀÌ ²À ÇÊ¿äÄ¡ ¾Ê´Ù¸é ÀÔÃâ·Â ½ºÆ®¸²¿¡ ´ëÇØ¼´Â ±×¸® ÈûÀ» ½ñÀ» Çʿ䰡 ¾ø´Ù. ¿¹¸¦ µé¾î À©µµ¿ìÁî ȯ°æÀ¸·Î ¹Ù·Î ³Ñ¾î°¥ °èȹÀ̶ó¸é Àå´ãÄÁµ¥ coutÀ» ¾µ ±âȸ´Â ¾øÀ» °ÍÀÌ´Ù. coutÀ» óÀ½ ¸¸µé ¶§¿Í ÇöÀçÀÇ È¯°æÀº ÀüÇô ¸ÂÁö ¾Ê´Ù. ÀÌ Àý¿¡¼´Â Áö³ªÄ¡°Ô »ó¼¼ÇÑ ºÎºÐÀº »ý·«ÇÏ°í ¿ä¾àÀûÀ¸·Î ¼³¸íÀ» Àü°³ÇÑ´Ù.
C++ÀÇ Ç¥ÁØ ÀÔÃâ·Â ½ºÆ®¸²Àº ¿©·¯ °¡Áö º¹ÀâÇÑ »óȲ¿¡ ´ëÇØ¼µµ ÀÔÃâ·ÂÀ» ó¸®ÇÒ ¼ö ÀÖµµ·Ï È®Àå °¡´ÉÇÑ Å¬·¡½º °èÃþÀ» ±¸¼ºÇϰí ÀÖ´Ù. ´ÙÀ½ ±×¸²Àº ºñÁÖ¾ó C++ 7.0ÀÇ Çì´õ ÆÄÀÏÀ» ±âÁØÀ¸·Î ±×·Á º» °£´ÜÇÑ Å¬·¡½º °èÃþµµÀÌ´Ù. ´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡¼´Â Á¶±Ý¾¿ ´Þ¶óÁú ¼öµµ ÀÖ´Ù.
ios_base Ŭ·¡½º´Â ÀÔÃâ·Â°ú °ü·ÃµÈ ¿©·¯ °¡Áö »ó¼ö³ª Ç÷¡±×µéÀ» °¡Áö¸ç ÀÌ Å¬·¡½º·ÎºÎÅÍ ÀÔÃâ·Â Ŭ·¡½ºµéÀÌ ÆÄ»ýµÈ´Ù. Ãâ·Â Ŭ·¡½ºÀÎ basic_ostreamÀÇ ¼±¾ð¹®À» º¸¸é ´ÙÀ½°ú °°ÀÌ µÇ¾î ÀÖ´Ù.
template<class _Elem, class _Traits>
class basic_ostream : virtual public basic_ios<_Elem, _Traits>
{
....
º¸´Ù½ÃÇÇ ½ÇÁ¦ Ŭ·¡½º°¡ ¾Æ´Ï¶ó ´ÙÀ½°ú °°Àº µÎ °³ÀÇ Àμö¸¦ ÃëÇϴ Ŭ·¡½º ÅÛÇø´ÀÌ´Ù.
_Elem
Ãâ·ÂÇÏ´Â µ¥ÀÌÅÍÀÇ ±âº» ŸÀÔÀÌ´Ù. Åë»ó ¹®ÀÚ¿ ÇüÅ·ΠÃâ·ÂµÇ¹Ç·Î °ú°Å¿¡´Â char ŸÀÔÀÇ ¹®ÀÚµéÀ» Ãâ·ÂÇßÀ¸³ª ¸ðµç ¹®ÀÚ¸¦ 16ºñÆ® Äڵ带 Ç¥ÇöÇÏ´Â À¯´ÏÄÚµå ȯ°æ¿¡¼´Â wchar_t°¡ µÉ ¼öµµ ÀÖ´Ù. wchar_t´Â unsigned short·Î Á¤ÀǵǾî ÀÖ´Ù. ¸¸¾à ¹Ì·¡¿¡ ¼¼»óÀÇ ¸ðµç ¹®ÀÚ¸¦ 32ºñÆ®·Î Ç¥ÇöÇÏ´Â ÄÚµå ü°è°¡ ³ª¿Â´Ù¸é _ElemÀº unsigned longÀÌ µÉ ¼öµµ ÀÖÀ¸¸ç basic_ostream ÅÛÇø´Àº ÀÌ·± ŸÀÔ¿¡ ´ëÇÑ ÁöÁ¤À» Àμö·Î ¼±ÅÃÇϵµ·Ï ÃæºÐÈ÷ ÀϹÝÀûÀ¸·Î ¼³°èµÇ¾î ÀÖ´Ù.
_Traits
ÀÌ Àμö´Â Ãâ·Â ¹®ÀÚ¿ÀÇ ÇüÅÂ¿Í °ü¸® ¹æ¹ýÀ» Á¤ÀÇÇÏ´Â °´Ã¼ÀÌ´Ù. º¸ÆíÀûÀ¸·Î ³Î Á¾·á ¹®ÀÚ¿À» ¸¹ÀÌ »ç¿ëÇϴµ¥ ½ÃÀÛ ¹øÁö¿¡¼ºÎÅÍ ¹®ÀÚ°¡ ³ªÅ¸³ª¸ç ³¡Àº NULL ¹®ÀڷΠǥÇöÇÏ´Â ¹æ½ÄÀÌ´Ù. C/C++À» ÁÖ·Î »ç¿ëÇÏ´Â »ç¶÷µé¿¡°Ô´Â ÀÌ ¹®ÀÚ¿ ÇüŰ¡ ¾ÆÁÖ Àͼ÷ÇϰÚÁö¸¸ ÀÌ´Â ¹®ÀÚ¿À» Ç¥ÇöÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ý ÁßÀÇ ÇϳªÀÏ »ÓÀÌ´Ù. º£ÀÌÁ÷ÀÇ ±âº» ¹®ÀÚ¿ÀÎ BSTR°ú ÆÄ½ºÄ®ÀÇ ¹®ÀÚ¿ ŸÀÔÀº ³Î Á¾·á ¹®ÀÚ¸¦ »ç¿ëÇÏ´Â ´ë½Å ¼±µÎ¿¡ ¹®ÀÚ¿ÀÇ ±æÀ̸¦ ¸ÕÀú ¹àÈ÷°í ¹®ÀÚ¿À» µÚ¿¡ ÀúÀåÇÑ´Ù. ´ÙÀ½Àº "Format"À̶ó´Â ¹®ÀÚ¿À» Ç¥ÇöÇÏ´Â µÎ °¡Áö ¹æ¹ýÀÌ´Ù.
³Î Á¾·á ¹®ÀÚ¿¿¡ Àͼ÷ÇÑ »óȲ¿¡¼ BSTR Æ÷¸ËÀº ¾ÆÁÖ ÀÌ»óÇÏ°Ô º¸À̰ÚÁö¸¸ µÎ ¹æ½Ä ¸ðµÎ ÀÏÀå ÀÏ´ÜÀÌ ÀÖ´Ù. BSTRÀº ±æÀÌ Á¤º¸°¡ Á¦ÀÏ ¾Õ¿¡ ÀÖÀ¸¹Ç·Î ÀÏÀÏÀÌ ¼¼ º¸Áö ¾Ê¾Æµµ ¹®ÀÚ¿ÀÇ ±æÀ̸¦ ±Ý¹æ ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÌ ÀåÁ¡ÀÌ°í ³Î Á¾·á ¹®ÀÚ¿Àº ½ÃÀÛ ¹øÁö¿¡ ¹®ÀÚ¿ÀÌ ¹Ù·Î µé¾î ÀÖÀ¸¹Ç·Î Æ÷ÀÎÅ͸¦ ÅëÇØ ¹®ÀÚ¿À» ´Ù·ç±â ½±´Ù. ¹Ý¸é ³Î Á¾·á ¹®ÀÚ¿Àº ±æÀ̸¦ Á¶»çÇÏ´Â ¼Óµµ°¡ ¹«Ã´ ´À¸°µ¥ ³Î ¹®ÀÚ°¡ ³ª¿Ã ¶§±îÁö ¸Þ¸ð¸®ÀÇ µÚÂÊÀ» ÀÏÀÏÀÌ Àо´Â ¼ö¹Û¿¡ ¾ø´Ù.
ÀÌ µÎ °¡Áö Æ÷¸Ë ¿Ü¿¡µµ ¹®ÀÚ¿À» Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¹«¼öÈ÷ ¸¹À» °ÍÀÌ´Ù. ÀÌ·± ¹æ½ÄÀ» ÁöÁ¤ÇÏ´Â Àμö°¡ ¹Ù·Î _TraitsÀε¥ ÀÌ °´Ã¼°¡ ¹®ÀÚ¿ÀÇ ±æÀ̸¦ °ü¸®ÇÏ´Â ¹æ¹ý, ¹®ÀÚ°£ÀÇ ¼ø¼¸¦ Á¤ÇÏ´Â ¹æ¹ý µîÀ» °áÁ¤ÇÑ´Ù. µðÆúÆ®ÀÎ char_Traits<_Elem> °´Ã¼´Â ¿ì¸®¿¡°Ô ÀÌ¹Ì Àͼ÷ÇÑ ³Î Á¾·á ¹®ÀÚ¿À» °ü¸®ÇÏÁö¸¸ ¿øÇÑ´Ù¸é ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ü ¼öµµ ÀÖ´Ù. ±×·¡¼ ÀÔÃâ·Â °´Ã¼°¡ ´Ù·ç´Â ¹®ÀÚ¿Àº ¹Ýµå½Ã NULL·Î ³¡³ªÁö ¾Ê¾Æµµ µÇ¸ç ƯÁ¤ÇÑ ÄÚµå ü°è¿¡ Á¾¼ÓµÇÁöµµ ¾Ê´Â´Ù.
basic_ostream Ŭ·¡½º´Â Àμö·Î ÁÖ¾îÁø ŸÀÔÀ» ¿ä¼Ò·Î °¡Áö´Â ¹®ÀÚ¿À» Ç¥ÇöÇ쵂 ¹®ÀÚ¿À» ´Ù·ç´Â ¹æ½ÄÀº _Traits°´Ã¼¿¡ µû¶ó ´Þ¶óÁø´Ù. ÀÌ Å¬·¡½º·ÎºÎÅÍ µÎ °³ÀÇ Æ¯¼öÈµÈ Å¬·¡½º°¡ Á¤ÀǵȴÙ.
typedef basic_ostream<char, char_traits<char> > ostream;
typedef basic_ostream<wchar_t, char_traits<wchar_t> > wostream;
ostreamÀº char ŸÀÔÀÇ ¹®ÀÚ¿À» Ãâ·ÂÇϴ Ŭ·¡½ºÀ̸ç char_traits<char> °´Ã¼´Â C¿¡¼ º¸ÆíÀûÀ¸·Î »ç¿ëµÇ´Â ³Î Á¾·á ¹®ÀÚ¿À» °ü¸®ÇÏ´Â °´Ã¼ÀÌ´Ù. wostreamÀº wchar_t ŸÀÔÀÇ ¹®ÀÚ¿, Áï À¯´ÏÄÚµå ¹®ÀÚ¿À» Ãâ·ÂÇϴ Ŭ·¡½ºÀÌ´Ù. °ú°Å Ç¥ÁØÀÌ È®¸³µÇ±â Àü¿¡´Â ostreamÀÌ ÀÏ¹Ý Å¬·¡½º¿´Áö¸¸ À¯´ÏÄڵ带 ´Ù·ê ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ basic_ostream ºÎ¸ð Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹Þµµ·Ï ¼öÁ¤µÇ¾ú´Ù. Ç¥ÁØ ÀԷµµ ¸¶Âù°¡Áö·Î basic_istream ºÎ¸ð Ŭ·¡½º·ÎºÎÅÍ ¾È½Ã, À¯´ÏÄڵ带 ÀԷ¹޴ µÎ °³ÀÇ Æ¯¼öÈµÈ Å¬·¡½º¸¦ Á¤ÀÇÇÑ´Ù. Ç¥ÁØ ¶óÀ̺귯¸®´Â 8°³ÀÇ ÀÔÃâ·Â °´Ã¼¸¦ ¹Ì¸® Á¤ÀÇÇϴµ¥ iostream Çì´õ ÆÄÀÏÀ» º¸¸é ´ÙÀ½°ú °°Àº ¼±¾ð¹®À» º¼ ¼ö ÀÖ´Ù.
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
cinÀÌ Ç¥ÁØ ÀÔ·Â °´Ã¼À̸ç coutÀÌ Ç¥ÁØ Ãâ·Â °´Ã¼ÀÌ´Ù. cerrÀº Ç¥ÁØ ¿¡·¯ °´Ã¼ÀÌµÇ ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾Ê°í °ð¹Ù·Î Ãâ·ÂÀ» ³» º¸³½´Ù´Â Á¡ÀÌ cout°ú ´Ù¸£¸ç clog´Â µð¹ö±ëÀ» À§ÇÑ ±â·Ï °´Ã¼ÀÌ¸ç ¹öÆÛ¸¦ »ç¿ëÇÑ´Ù. cerr°ú clog·ÎÀÇ Ãâ·ÂÀº µÑ ´Ù ¸ð´ÏÅÍ·Î ³ª°¡°Ô µÇ¾î ÀÖÁö¸¸ ÀçÁöÇâµÉ °æ¿ì ´Ù¸¥ ÀåÄ¡·Î Ãâ·ÂÀ» ³» º¸³¾ ¼öµµ ÀÖ´Ù. ¾Æ·¡ÂÊÀÇ w°¡ ºÙÀº °´Ã¼µéÀº À¯´ÏÄÚµå ÀÔÃâ·Â °´Ã¼µéÀÌ´Ù.
Ç¥ÁØ ÀÔÃâ·Â °´Ã¼µéÀº È¿À²ÀûÀÎ ÀÔÃâ·Â °ü¸®¸¦ À§ÇØ ³»ºÎÀûÀ¸·Î ¹öÆÛ¸¦ »ç¿ëÇÑ´Ù. ÀÔÃâ·ÂÇÒ ¶§¸¶´Ù ÇÑ ¹®ÀÚ¾¿ ÀåÄ¡·Î Á÷Á¢ ÀÔÃâ·ÂÇÏ¸é ´À¸®±â ¶§¹®¿¡ ¹öÆÛ°¡ ÇÊ¿äÇÏ´Ù. ÀÌ ¹öÆÛ´Â streambuf¶ó´Â ³»ºÎ Ŭ·¡½º¿¡ ÀÇÇØ ÀÚµ¿À¸·Î °ü¸®µÈ´Ù.