36-2-´Ù.ÀÔÃâ·Â

¾Õ¿¡¼­ ÀÌ¹Ì »ç¿ëÇØ ºÁ¼­ ¾Ë°ÚÁö¸¸ string °´Ã¼¸¦ È­¸éÀ¸·Î Ãâ·ÂÇÒ ¶§´Â << ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© coutÀ¸·Î º¸³»±â¸¸ ÇÏ¸é µÈ´Ù. ¾ÆÁÖ ´ç¿¬ÇØ º¸ÀÌ°ÚÁö¸¸ ÀÌ Ãâ·Â Äڵ尡 µ¿ÀÛÇÏ´Â ÀÌÀ¯´Â cout°ú string °´Ã¼¸¦ Àμö·Î ÃëÇÏ´Â << Àü¿ª ¿¬»êÀÚ°¡ ¿À¹ö·ÎµùµÇ¾î Àֱ⠶§¹®ÀÌ´Ù. coutÀÌ stringÀ» ¾Ë¾Æ¼­ ÀνÄÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó string Çì´õ ÆÄÀÏ¿¡ ´ÙÀ½°ú °°Àº ¿¬»êÀÚ°¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ÀÌ·± Ãâ·Â Äڵ尡 µ¿ÀÛÇÑ´Ù.

 

template<class _Elem, class _Traits, class _Alloc>

inline basic_ostream<_Elem, _Traits>& __cdecl operator<<(basic_ostream<_Elem, _Traits>& _Ostr, const basic_string<_Elem, _Traits, _Alloc>& _Str);

 

¼±¾ð¹®ÀÌ »ó´çÈ÷ º¹ÀâÇØ º¸À̴µ¥ ´Ù¾çÇÑ Å¸ÀÔÀ» Çã¿ëÇÏ´Â ÅÛÇø´ÀÌ °³ÀÔµÇ¸é ¿ø·¡ º¹ÀâÇØ Áú ¼ö¹Û¿¡ ¾ø´Ù. ±×·¡¼­ ÅÛÇø´ ÄÚµå´Â °¡µ¶¼ºÀÌ ¶³¾îÁø´Ù°í ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¼±¾ð¹®À» Á» Àб⠽±°Ô Á¤¸®ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

 

ostream& operator<<(ostream& cout, string &s);

 

cout, string °´Ã¼¸¦ Àμö·Î ÃëÇØ coutÀ¸·Î stringÀÇ ¹®ÀÚ¿­À» Ãâ·ÂÇÏ°í ´Ù½Ã cout °´Ã¼ÀÇ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇÏ´Â << ¿¬»êÀÚÀÌ´Ù. ¸®ÅÏ°ªÀÌ coutÀÇ ·¹ÆÛ·±½ºÀ̹ǷΠ¿¬¼âÀûÀÎ Ãâ·Âµµ °¡´ÉÇÏ´Ù. ¼±¾ð¹®À̳ª ³»ºÎ ÄÚµå´Â º¹ÀâÇÏ°ÚÁö¸¸ Ç¥ÁØ ÀÔÃâ·Â ½ºÆ®¸²À» ¾²´Â ¹æ¹ý°ú µ¿ÀÏÇϹǷΠstring °´Ã¼¸¦ Ãâ·ÂÇÏ°í ½ÍÀ¸¸é ¹«Á¶°Ç cout << ·Î º¸³»±â¸¸ ÇÏ¸é µÈ´Ù.

ÄÜ¼Ö ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé ÀÏÀÌ ¾ø¾î È°¿ë¼ºÀº ¶³¾îÁöÁö¸¸ cin Ç¥ÁØ ÀÔ·ÂÀ» ÅëÇØ ¹®ÀÚ¿­À» ÀԷ¹޴ °Íµµ °¡´ÉÇÏ´Ù. string Çì´õ ÆÄÀÏÀÌ << ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ´Â °Í°ú ¸¶Âù°¡Áö·Î >> ¿¬»êÀÚµµ Á¤ÀÇÇÏ°í Àֱ⠶§¹®ÀÌ´Ù. ±×·¯³ª >> ¿¬»êÀÚ´Â ÇÑ ´Ü¾î¸¸ ÀÔ·ÂÇÒ ¼ö Àִµ¥ getline Àü¿ª ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é °³Çà ÄÚµåÀü±îÁöÀÇ ÇÑ ÇàÀ» ¸ðµÎ ÀԷ¹ÞÀ» ¼ö ÀÖ´Ù. getlineÀº ¸â¹ö ÇÔ¼ö°¡ ¾Æ´Ï¶ó cin°ú stringÀ» Àμö·Î ¹Þ¾ÆµéÀÌ´Â Àü¿ª ÇÔ¼ö·Î ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù.

 

¿¹ Á¦ : stringin

#include <iostream>

#include <string>

using namespace std;

 

void main()

{

     string name, addr;

 

     cout << "À̸§À» ÀÔ·ÂÇϽÿÀ : ";

     cin >> name;

     cout << "ÀÔ·ÂÇÑ À̸§Àº " << name << "ÀÔ´Ï´Ù." << endl;

     cin.ignore();

     cout << "ÁÖ¼Ò¸¦ ÀÔ·ÂÇϽÿÀ : ";

     getline(cin,addr);

     cout << "ÀÔ·ÂÇÑ ÁÖ¼Ò´Â " << addr << "ÀÔ´Ï´Ù." << endl;

}

 

ÀÌ ¿¹Á¦´Â µÎ °³ÀÇ string °´Ã¼¸¦ ¼±¾ðÇÏ°í À̸§°ú ÁÖ¼Ò¸¦ ÀԷ¹޴´Ù. À̸§Àº ÇÑ ´Ü¾îÀ̹ǷΠ>> ¿¬»êÀÚ·Î ÀԷ¹ÞÀ» ¼ö ÀÖ°í ÁÖ¼Ò´Â ÇÑ ÇàÀ̹ǷΠ¹Ýµå½Ã getlineÀ¸·Î ÀÔ·Â¹Þ¾Æ¾ß ÇÑ´Ù. >> ¿¬»êÀÚ´Â °ø¹éÀ» ¸¸³ª¸é ÀÔ·ÂÀ» ¿Ï·áÇØ ¹ö¸®¹Ç·Î ÁÖ¼Ò°°Àº ±ä ¹®ÀåÀ» ÀԷ¹ÞÁö´Â ¸øÇÑ´Ù. ¶ÇÇÑ cinÀº ¹®ÀÚ¿­ ÀÔ·ÂÈÄ ¹öÆÛ¿¡ °³Çà Äڵ带 ³²°Ü µÎ¹Ç·Î ignore ÇÔ¼ö·Î ÀÌ °³Çà Äڵ带 ¹ö¸®´Â 󸮵µ ÇÊ¿äÇÏ´Ù.

getlineÀ¸·Î ¹®ÀåÀ» ÀԷ¹ÞÀ» ¶§ ÀÌ ÇÔ¼ö°¡ ÀԷ¹ÞÀº ¹®ÀÚ¿­ÀÇ ±æÀ̸¸Å­ string °´Ã¼ÀÇ ±æÀ̸¦ ÀÚµ¿À¸·Î °ü¸®ÇϹǷΠ¾Æ¹«¸® ±ä ¹®ÀÚ¿­ÀÌ ÀԷµǴõ¶óµµ ¹è¿­ ¹üÀ§¸¦ ³Ñ¾î¼­´Â °ÍÀº °ÆÁ¤ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ÀÌ¿¡ ºñÇØ cinÀ¸·Î ¹®ÀÚ ¹è¿­¿¡ ¹®ÀÚ¿­À» ÀԷ¹ÞÀ» ¶§´Â ¹è¿­ ¹üÀ§¸¦ ³Ñ¾î¼³ ¶§ ´Ù¿îµÉ À§Ç輺ÀÌ ÀÖ´Ù. ¹è¿­Àº ³¡ Ç¥½ÄÀÌ ¾ø±â ¶§¹®¿¡ Ç×»ó À§ÇèÇÏ´Ù.

¹®ÀÚ¿­ÀÇ °³º° ¹®ÀÚµéÀ» ¾×¼¼½ºÇÏ°í ½ÍÀ» ¶§´Â [ ] ¿¬»êÀÚ ¶Ç´Â at ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. µÑ ´Ù ÷ÀÚ ¹øÈ£¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ÷ÀÚ À§Ä¡ÀÇ ¹®ÀÚ¸¦ Àд´Ù. ÀÌ ÇÔ¼öµéÀº »ó¼ö ¹öÀü°ú ºñ»ó¼ö ¹öÀüÀÌ °¢°¢ ÁغñµÇ¾î ÀÖ´Ù.

 

char& operator[](size_type _Off)

char& at(size_type _Off);

const char& operator[](size_type _Off) const

const char& at(size_type _Off) const;

 

[ ] ¿¬»êÀÚ¿Í at ÇÔ¼ö´Â ±â´ÉÀÌ °ÅÀÇ µ¿ÀÏÇѵ¥ Àμö·Î ÁÖ¾îÁø ÷ÀÚÀÇ ¹®ÀÚ¸¦ ÀÐµÇ ·¹ÆÛ·±½º°¡ ¸®ÅϵǹǷΠÁº¯¿¡ »ç¿ëÇÏ¿© °ªÀ» º¯°æÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ´Ü, »ó¼ö °´Ã¼ÀÎ °æ¿ì´Â Áº¯¿¡ ¾µ ¼ö ¾øÀ¸¹Ç·Î »ó¼ö ¹öÀüÀÇ [ ] ¿¬»êÀÚ¿Í at ÇÔ¼ö°¡ µû·Î Á¸ÀçÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­ÀÇ °³º° ¹®ÀÚ¸¦ Àоî È­¸éÀ¸·Î Ãâ·ÂÇÑ´Ù.

 

¿¹ Á¦ : stringat

#include <iostream>

#include <string>

using namespace std;

 

void main()

{

     string s("korea");

     size_t len,i;

 

     len=s.size();

     for (i=0;i<len;i++) {

          cout << s[i];

     }

     cout << endl;

     s[0]='c';

 

     for (i=0;i<len;i++) {

          cout << s.at(i);

     }

     cout << endl;

}

 

s ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ Á¶»çÇÑ ÈÄ ±æÀ̸¸Å­ ·çÇÁ¸¦ µ¹¸ç s[i] ¿¬»ê¹®À¸·Î °³º° ¹®ÀÚ¸¦ ÀÐ¾î º¸¾Ò´Ù. [ ] ¿¬»êÀÚ¸¦ »ç¿ëÇϸé string °´Ã¼¸¦ ¸¶Ä¡ CÀÇ ¹®ÀÚ ¹è¿­Ã³·³ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. s[0]¸¦ ´ëÀÔ ¿¬»êÀÚÀÇ Áº¯¿¡ µÎ¾î °³º° ¹®ÀÚÀÇ °ªÀ» º¯°æÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

korea

corea

 

óÀ½¿¡´Â [ ] ¿¬»êÀÚ·Î °³º° ¹®ÀÚ¸¦ Ãâ·ÂÇØ º¸¾Ò°í s[0]¸¦ 'c'·Î º¯°æÇÑ ÈÄ at ÇÔ¼ö·Î °³º° ¹®ÀÚ¸¦ ´Ù½Ã ÀÐ¾î º¸¾Ò´Ù. s¸¦ const·Î º¯°æÇÏ¸é »ó¼ö °´Ã¼°¡ µÇ¹Ç·Î s[0]='c'; ´ëÀÔ¹®Àº ¿¡·¯·Î 󸮵ȴÙ. ±×·¯³ª »ó¼ö ¹öÀüÀÇ [ ] ¿¬»êÀÚµµ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î s[i]·Î °³º° ¹®ÀÚ¸¦ Àд ¿¬»êÀº Çã¿ëµÈ´Ù.

[ ] ¿¬»êÀÚ¿Í at ÇÔ¼ö´Â ¹è¿­ÀÇ °æ°è¸¦ Á¡°ËÇϴ°¡ ¾Æ´Ñ°¡¸¸ ´Ù¸£´Ù. [ ] ¿¬»êÀڴ ÷ÀÚ°¡ ±æÀ̺¸´Ù ´õ Ä¿µµ °æ°è Á¡°ËÀ» ÇÏÁö ¾ÊÀ¸¹Ç·Î À߸øµÈ µ¿ÀÛÀ» ÇÒ ¼ö ÀÖÁö¸¸ at ÇÔ¼ö´Â ±æÀ̺¸´Ù ´õ Å« ÷ÀÚ¸¦ Àμö·Î Àü´ÞÇÒ °æ¿ì out_of_range ¿¹¿Ü¸¦ ¹ß»ý½ÃŲ´Ù. at ÇÔ¼ö°¡ Á» ´õ ¾ÈÀüÇÏ´Ù°í ÇÒ ¼ö ÀÖÁö¸¸ ¸Å¹ø ÷ÀÚÀÇ À¯È¿¼ºÀ» Á¡°ËÇØ¾ß ÇϹǷΠ¼Óµµ´Â ±×¸¸Å­ ´À¸± °ÍÀÌ´Ù. È®½ÇÈ÷ ¹üÀ§¸¦ ³Ñ¾î¼­Áö ¾Ê´Â´Ù´Â º¸ÀåÀÌ ÀÖ´Ù¸é [ ] ¿¬»êÀÚ°¡ ´õ À¯¸®ÇÏ´Ù. ¿¹Á¦ÀÇ µÎ ¹ø° for ·çÇÁ´Â at ÇÔ¼ö¸¦ »ç¿ëÇÏ°í Àִµ¥ i°¡ ¹®ÀÚ¿­ÀÇ ±æÀ̱îÁö¸¸ ¹Ýº¹µÇ¹Ç·Î [ ] ¿¬»êÀÚ¸¦ ¾²´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.