36-2-¶ó.´ëÀÔ ¹× ¿¬°á

string °´Ã¼¿¡ ´Ù¸¥ ¹®ÀÚ¿­À̳ª ¹®ÀÚ¸¦ ´ëÀÔÇÒ ¶§´Â = ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. °ªÀ» º¯°æÇÒ ¶§´Â = ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù´Â »ó½Ä¿¡ ºÎÇÕÇϱâ À§ÇØ ÀÌ ¿¬»êÀÚ°¡ Á¤ÀǵǾî ÀÖ´Ù. ¼¼ °¡Áö Á¾·ùÀÇ ¹®ÀÚ¿­À» ´ëÀÔÇÒ ¼ö ÀÖµµ·Ï ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù.

 

string& operator=(char ch);

string& operator=(const char* str);

string& operator=(const string& other);

 

´ÜÀÏ ¹®ÀÚ, ¹®ÀÚ¿­ »ó¼ö ¶Ç´Â ´Ù¸¥ string °´Ã¼¸¦ ´ëÀÔÇÒ ¼ö Àִµ¥ »ó½ÄÀûÀ¸·Î ¹®ÀÚ¿­¿¡ ´ëÀÔÇÒ¸¸ÇÑ ¸ðµç °ÍµéÀ» ´Ù ´ëÀÔÇÒ ¼ö ÀÖ´Ù°í º¸¸é µÈ´Ù. ´ëÀÔ ¿¬»êÀÚ´Â ¿ìº¯ÀÇ ±æÀ̸¸Å­ ¸Þ¸ð¸®¸¦ È®º¸ÇÑ ÈÄ ¸Þ¸ð¸® º¹»ç¸¦ ¼öÇàÇÒ °ÍÀ̸ç string °´Ã¼³¢¸® ´ëÀÔÇÒ ¶§´Â ±íÀº º¹»ç¸¦ ÇÒ °ÍÀÌ´Ù. ¹®ÀÚ¿­³¢¸® ¿¬°áÇÒ ¶§´Â += ¿¬»êÀÚ¸¦ »ç¿ëÇϴµ¥ ´ëÀÔ ¿¬»êÀÚ¿Í ¸¶Âù°¡Áö·Î ¼¼ °¡Áö ¹öÀüÀ¸·Î ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù.

 

string& operator+=(char ch);

string& operator+=(const char* str);

string& operator+=(const string& other);

 

¹®ÀÚ¿­ »ó¼ö³ª string °´Ã¼¸¦ ¿¬°áÇÒ ¼ö ÀÖ°í ´ÜÀÏ ¹®ÀÚµµ ¿¬°áÇÒ ¼ö Àִµ¥ ´ÜÀÏ ¹®ÀÚ¸¦ ¹®ÀÚ¿­ ³¡¿¡ Ãß°¡ÇÏ´Â ±â´ÉÀº C ÇÔ¼ö¿¡´Â ¾ø´Â ±â´ÉÀÌ´Ù. ¿¬°áÇÒ ¶§µµ ¸¶Âù°¡Áö·Î µÎ ¹®ÀÚ¿­À» ÇÕÄ£ ±æÀ̸¸Å­ ¸Þ¸ð¸®¸¦ ÀçÇÒ´çÇÒ °ÍÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â ´ëÀÔ°ú ¿¬°á µ¿ÀÛÀ» Å×½ºÆ®ÇÑ´Ù.

 

¿¹ Á¦ : stringequalplus

#include <Turboc.h>

#include <iostream>

#include <string>

using namespace std;

 

void main()

{

     string s1("¾ßÈ£ ½Å³­´Ù.");

     string s2;

 

     s2="ÀÓÀÇÀÇ ¹®ÀÚ¿­";

     cout << s2 << endl;

     s2=s1;

     cout << s2 << endl;

     s2='A';

     cout << s2 << endl;

 

     s1 += "¹®ÀÚ¿­ ¿¬°á.";

     cout << s1 << endl;

     s1 += s2;

     cout << s1 << endl;

     s1 += '!';

     cout << s1 << endl;

 

     string s3;

     s3="s1:"+s1+"s2:"+s2+'.';

     cout << s3 << endl;

}

 

¹®ÀÚ¿­³¢¸®, ´ÜÀÏ ¹®ÀÚ¿Í ´ëÀÔ ¹× ¿¬°áÀ» ÇØ º¸¾Ò´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°Àºµ¥ ÄÚµå¿Í ¿¬»ê ÈÄÀÇ °á°ú¸¦ ºñ±³ÇØ º¸¾Æ¶ó.

 

ÀÓÀÇÀÇ ¹®ÀÚ¿­

¾ßÈ£ ½Å³­´Ù.

A

¾ßÈ£ ½Å³­´Ù.¹®ÀÚ¿­ ¿¬°á.

¾ßÈ£ ½Å³­´Ù.¹®ÀÚ¿­ ¿¬°á.A

¾ßÈ£ ½Å³­´Ù.¹®ÀÚ¿­ ¿¬°á.A!

s1:¾ßÈ£ ½Å³­´Ù.¹®ÀÚ¿­ ¿¬°á.A!s2:A.

 

´ëÀÔ, ¿¬°á ¿¬»êÀÚ´Â ¸ðµÎ stringÇüÀÇ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠ¿¬¼âÀûÀÎ ´ëÀÔÀ̳ª ¿¬°áµµ °¡´ÉÇÏ´Ù. + ¿¬»êÀÚµµ stringÀÇ ¸â¹ö´Â ¾Æ´ÏÁö¸¸ ÇÁ·»µå·Î Á¤ÀǵǾî ÀÖ¾î ¹®ÀÚ¿­, string °´Ã¼, ´ÜÀÏ ¹®ÀÚ¸¦ ¿¬¼âÀûÀ¸·Î ¿¬°áÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ¿¬°áÇÏ°í ½ÍÀº ´ë»óÀ» ¼ø¼­¿¡ »ó°ü¾øÀÌ + ¿¬»êÀÚ·Î Á× ³ª¿­Çϱ⸸ ÇÏ¸é ¿øÇÏ´Â ¹®ÀÚ¿­À» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ¿¹Á¦ÀÇ s3´Â s1°ú s2±×¸®°í Áß°£ Áß°£ÀÇ ¹®ÀÚ¿­ »ó¼öµéÀ» ¿¬°áÇÏ¿© ¸¸µé¾îÁø ¹®ÀÚ¿­ÀÌ´Ù.

¹®ÀÚ¿­À» ´ëÀÔÇÏ°í ¿¬°áÇÏ´Â =, += ¿¬»êÀÚ´Â Ç×»ó ÇÇ¿¬»êÀÚ Àüü¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ´Ù¸¥ ¹®ÀÚ¿­ÀÇ ÀϺθ¸ ´ëÀÔÇϰųª ¿¬°áÇÏ°í ½ÍÀ» ¶§´Â ¿¬»êÀÚ¸¦ ¾µ ¼ö ¾øÀ¸¸ç ´ÙÀ½ µÎ ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. string °´Ã¼³¢¸® ´ëÀÔ, ¿¬°áÇÏ´Â ´ëÇ¥ÀûÀÎ µÎ ÇÔ¼öÀÇ ¿øÇü¸¸ º¸À̴µ¥ ¿¹»óÇÏ´Ù½ÃÇÇ À̺¸´Ù ÈξÀ ´õ ¸¹Àº ¿øÇüÀÌ ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù. ³ª¸ÓÁö´Â ·¹ÆÛ·±½º¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

 

string& assign(const string& _str, size_t off, size_t count);

string& append(const string& _str, size_t off, size_t count);

 

ÀμöÀÇ Çü½ÄÀº Á÷°üÀûÀε¥ str°´Ã¼ÀÇ off À§Ä¡¿¡¼­ count°³¼ö¸¸Å­¸¸ ´ëÀÔÇϰųª ¿¬°áÇÑ´Ù. = ¿¬»êÀÚ°¡ Ç¥ÁØ strcpy ÇÔ¼ö¶ó¸é assignÀº strncpy ÇÔ¼ö¿¡ ÇØ´çÇÑ´Ù. µ¿ÀÛÀÌ °£´ÜÇϹǷΠ¿¹Á¦¸¸ ÇÑ ¹ø ½ÇÇàÇØ ºÁµµ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 

¿¹ Á¦ : AssignAppend

#include <Turboc.h>

#include <iostream>

#include <string>

using namespace std;

 

void main()

{

     string s1("1234567890");

     string s2("abcdefghijklmnopqrstuvwxyz");

     string s3;

 

     s3.assign(s1,3,4);

     cout << s3 << endl;

     s3.append(s2,10,7);

     cout << s3 << endl;

}

 

µÎ °³ÀÇ ¹®ÀÚ¿­ °´Ã¼¸¦ ¸¸µé¾î ³õ°í ÀÌ Áß ÀϺθ¦ ´ëÀÔ ¹× ¿¬°áÇØ º¸¾Ò´Ù.

 

4567

4567klmnopq

 

s3¹®ÀÚ¿­ °´Ã¼´Â µðÆúÆ® »ý¼ºÀÚ¿¡ ÀÇÇØ ºó ¹®ÀÚ¿­·Î »ý¼ºµÇ¾ú´Ù°¡ s1ÀÇ ÀϺΠ¹®ÀÚ¿­À» ´ëÀÔ¹Þ°í ´Ù½Ã s2ÀÇ ÀϺΠ¹®ÀÚ¿­À» ¿¬°áÇÏ¿© ¸¸µé¾îÁ³´Ù.

´ÙÀ½ µÎ ÇÔ¼ö´Â ¹®ÀÚ ¹è¿­¿¡ ¹®ÀÚ¿­À» º¹»çÇϰųª string °´Ã¼³¢¸® ±³È¯ÇÑ´Ù.

 

size_type copy(value_type* _Ptr, size_type _Count, size_type _Off = 0) const;

void swap(basic_string& _Str);

 

copy ÇÔ¼ö´Â _Ptr ¹®ÀÚ ¹è¿­¿¡ °´Ã¼ÀÇ _Off À§Ä¡¿¡ ÀÖ´Â ¹®ÀÚµéÀ» _Count °³¼ö¸¸Å­ º¹»çÇÑ´Ù. _OffÀÇ µðÆúÆ®°ªÀÌ 0À̹ǷΠÀÌ Àμö¸¦ »ý·«ÇÏ¸é °´Ã¼ÀÇ Ã³À½ ¹®ÀÚºÎÅÍ ÁöÁ¤ÇÑ °³¼ö¸¸Å­ º¹»çµÉ °ÍÀÌ´Ù. ÁöÁ¤ÇÑ °³¼ö¸¸Å­¸¸ Á¤È®ÇÏ°Ô º¹»çÇϹǷΠ³Î Á¾·á ¹®ÀÚ´Â ºÙÀÌÁö ¾Ê´Â´Ù. ¸¸¾à °´Ã¼ÀÇ ¹®ÀÚ¿­ ±æÀÌ°¡ _Countº¸´Ù ´õ ÀÛÀ¸¸é °´Ã¼ÀÇ ±æÀ̸¸Å­¸¸ º¹»çµÈ´Ù. _Ptr ¹è¿­Àº º¹»ç¹ÞÀ» ¹®ÀÚ¿­ÀÇ ±æÀ̸¸Å­ ÃæºÐÇÑ ±æÀ̸¦ °¡Á®¾ß Çϴµ¥ ¸¸¾à ÀÌ ±æÀÌ°¡ ºÎÁ·ÇÏ¸é °á°ú´Â ¿¹ÃøÇÒ ¼ö ¾ø´Ù. ´Ù¿îµÉ ¼öµµ ÀÖ´Ù´Â ¾ê±âÀε¥ ½ÃÀÛ ¹øÁö¸¸ Àü´ÞµÇ´Â ¹®ÀÚ ¹è¿­ÀÇ ±æÀÌ´Â C++¿¡¼­µµ ¿©ÀüÈ÷ ¾Ë ¼ö ¾øÀ¸¹Ç·Î ¾îÂîÇÒ µµ¸®°¡ ¾ø´Ù.

copy ÇÔ¼ö¸¦ »ç¿ëÇϸé string °´Ã¼ÀÇ ³»¿ëÀ» ¹®ÀÚ ¹è¿­·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. swapÇÔ¼ö´Â À̸§ ±×´ë·Î µÎ ¹®ÀÚ¿­ÀÇ ³»¿ëÀ» ±³È¯Çϴµ¥ À̶§ µÎ °´Ã¼ÀÇ ¸Þ¸ð¸®´Â ÀÚµ¿À¸·Î °ü¸®µÈ´Ù. ÀÌ µÎ ÇÔ¼öÀÇ µ¿ÀÛ È®ÀÎÀ» À§ÇÑ °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.

 

¿¹ Á¦ : CopySwap

#include <Turboc.h>

#include <iostream>

#include <string>

using namespace std;

 

void main()

{

     string s("1234567890");

     char str[128]="abcdefghijklmnopqrstuvwxyz";

 

     s.copy(str,5,3);

     cout << str << endl;

 

     string s1("dog");

     string s2("cow");

     cout << "s1:" << s1 << "s2:" << s2 << endl;

     s1.swap(s2);

     cout << "s1:" << s1 << "s2:" << s2 << endl;

}

 

sÀÇ copy ÇÔ¼ö·Î 3¹ø° ¹®ÀÚºÎÅÍ ±æÀÌ 5¸¸Å­À» str ¹è¿­·Î º¹»çÇØ º¸¾Ò´Ù. strÀÇ Ã¹ ´Ù¼¸ ¹®ÀÚ°¡ sÀÇ ºÎºÐ ¹®ÀÚ¿­·Î ´ëüµÉ °ÍÀÌ´Ù. ±×¸®°í s1, s2 µÎ ¹®ÀÚ¿­ °´Ã¼¸¦ swap ÇÔ¼ö·Î ±³È¯ÇØ º¸¾Ò´Ù.

 

45678fghijklmnopqrstuvwxyz

s1:dogs2:cow

s1:cows2:dog

 

¸¸¾à copy ÇÔ¼ö·Î ¹è¿­ÀÇ Áß°£Âë¿¡ ¹®ÀÚ¿­À» º¹»çÇÏ°í ½Í´Ù¸é ù ¹ø° ÀμöÀÎ Æ÷ÀÎÅÍ¿¡ Á¤¼ö¸¦ ´õÇϱ⸸ ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î strÀÇ 4¹ø° À§Ä¡¿¡ ¹®ÀÚ¿­À» º¹»çÇÏ°í ½Í´Ù¸é s1.copy(str+4,5,3)À» È£ÃâÇÑ´Ù. swap ÇÔ¼ö´Â µÎ °´Ã¼ÀÇ ³»¿ëÀ» ±³È¯ÇϹǷΠȣÃâ °´Ã¼¿Í ÇÇ¿¬»êÀÚ¸¦ ¹Ù²ãµµ °á°ú´Â µ¿ÀÏÇÏ´Ù. Áï s2.swap(s1)À̶ó°í Çصµ ¶È°°´Ù.