ÀÌ String class´Â Ç¥ÁØ C++ ¶óÀ̺귯¸®ÀÇ string class¿Í ´Ù¸£´Ù´Âµ¥ ÁÖÀÇÇ϶ó. ÀÌ Æ¯º°ÇÑ String class´Â Á÷Á¢ ¸¸µé¾îÁø °ÍÀ̰í, Java ÇÁ·Î±×·¡¸ÓµéÀÌ C++À» ½±°Ô »ç¿ëÇϵµ·Ï Çϱâ À§ÇØ ¸¸µé¾îÁ³´Ù. ¸¸¾à ´ç½ÅÀÌ C++°ú ´õ Àͼ÷ÇÏ´Ù¸é Ç¥ÁØ C++ ¶óÀ̺귯¸®¿¡ Á¦°øµÇ´Â ÁøÂ¥ string class ¸¦ »ç¿ë ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
String class¸¦ »ç¿ëÇϱâ À§ÇØ, 23ÀýÀÇ "example_String.cpp" ¿¹Á¦ ÇÁ·Î±×·¥°ú 23ÀýÀÇ String class¸¦ º¸¾Æ¶ó.
'String class' ´Â char¿Í char * ŸÀÔÀ» ¿Ïº®ÇÏ°Ô ´ë½ÅÇÒ ¼ö ÀÖ´Ù. 'String class'¸¦ char ó·³ »ç¿ëÇÒ ¼öµµ ÀÖ°í, ¿©·¯°¡Áö ´Ù¾çÇÑ ±â´Éµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. 23Àý ¿¡ ÁÖ¾îÁø makefile¿¡¼ ¸¸µé¾îÁö´Â 'libString.a'¸¦ ¸µÅ©ÇؾßÇϰí, C++ ¶óÀ̺귯¸®°¡ À§Ä¡ÇÑ ¸ðµç °÷ÀÇ ¶óÀ̺귯¸®¸¦ /usr/lib ³ª /lib µð·ºÅ丮¿¡ ¶óÀ̺귯¸®¸¦ º¹»çÇØ³Ö¾î¾ß ÇÑ´Ù. 'libString.a'¸¦ »ç¿ëÇϱâ À§Çؼ´Â, ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇ϶ó.
g++ example.cpp -lString |
String aa; aa = "Creating an Universe is very easy, similar to creating a baby human."; // ÇÁ·Î±×·¥¿¡¼ aa.val()À» 'char *' °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++) { //fprintf(stdout, "aa.val()[%ld]=%c ", tmpii, aa.val()[tmpii]); fprintf(stdout, "aa[%ld]=%c ", tmpii, aa[tmpii]); } // ½ÇÁ¦·Î 'char *'·Î »ç¿ëÇϸé.. for (char *tmpcc = aa.val(); *tmpcc != 0; tmpcc++) { fprintf(stdout, "aa.val()=%c ", *tmpcc); } |
'String class' ´Â ¾Æ·¡¿Í °°Àº ¿¬»êÀÚ¸¦ Á¦°øÇÑ´Ù :-
Equal to ==
Not equal to !=
Assignment =
Add to itself and Assignment +=
String concatenation or addition +
String aa; String bb("Bill Clinton"); aa = "put some value string"; // assignment operator aa += "add some more"; // Add to itself and assign operator aa = "My name is" + " Alavoor Vasudevan "; // string cat operator if (bb == "Bill Clinton") // boolean equal to operator cout << "bb is equal to 'Bill Clinton' " << endl; if (bb != "Al Gore") // boolean 'not equal' to operator cout << "bb is not equal to 'Al Gore'" << endl; |
String class¿¡¼ Á¦°øµÇ´Â ÇÔ¼öµéÀº Java ÀÇ String class¿Í °°Àº À̸§À» °®´Â´Ù. ÇÔ¼ö À̸§°ú µ¿ÀÛÀº JavaÀÇ String class¿Í ¿ÏÀüÈ÷¶È°°´Ù. StringBuffer class¿ª½Ã Á¦°øµÈ´Ù. À̵éÀº Java¿Í C++°£ÀÇ Æ÷ÆÃÀ» ½±°Ô ÇÒ °ÍÀÌ´Ù (Àß¶ó³»±â & ºÙ¿©³Ö±â¿Í ÃÖ¼ÒÇÑÀÇ ÄÚµå Á¶Á¤ ¸¸À» ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù). JavaÀÇ ÇÔ¼ö¿¡ µé¾îÀÖ´Â Äڵ带 C++ÀÇ ¸â¹öÇÔ¼ö·Î º¹»çÇϱ⸸ ÇÏ¸é µÉ °ÍÀ̰í, ÃÖ¼ÒÇÑÀÇ º¯°æ¸¸À¸·Îµµ C++¿¡¼ Àß ÄÄÆÄÀÏ µÉ °ÍÀÌ´Ù. ¶Ç´Ù¸¥ ÀÌÁ¡Àº Java¿Í C++À» ¸ðµÎ »ç¿ëÇÏ´Â °³¹ßÀÚµéÀÌ µÑ °£ÀÇ ¹®¹ýÀ̳ª ÇÔ¼ö À̸§À» µû·Îµû·Î ±â¾ïÇÒ Çʿ䰡 ¾ø¾îÁø´Ù´Â °ÍÀÌ´Ù.
¿¹¸¦µé¾î integer¸¦ ¹®ÀÚ¿·Î ¹Ù²Ù´Â °ÍÀ» º¸¸é,
String aa; aa = 34; // '=' ¿¬»êÀÚ°¡ int¸¦ stringÀ¸·Î ¹Ù²Û´Ù. cout << "The value of aa is : " << aa.val() << endl; aa = 234.878; // '=' ¿¬»êÀÚ°¡ float¸¦ stringÀ¸·Î ¹Ù²Û´Ù. cout << "The value of aa is : " << aa.val() << endl; aa = 34 + 234.878; cout << "The value of aa is : " << aa.val() << endl; // Ãâ·ÂÀº '268.878'ÀÏ °ÍÀÌ´Ù. // castingÀÌ ÇÊ¿äÇÏ´Ù. aa = (String) 34 + " Can create infinite number of universes!! " + 234.878; cout << "The value of aa is : " << aa.val() << endl; // Ãâ·ÂÀº '34 Can create infinite number of universes!! 234.878'ÀÏ °ÍÀÌ´Ù. |
String classÀÇ ÇÔ¼öÀ̸§¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº 23Àý ¸¦ Âü°íÇØ¶ó. °°Àº String.hÆÄÀÏÀÌ ´ÙÀ½ ¼½¼Ç¿¡µµ ³ª¿Ã °ÍÀÌ´Ù.
¸¸¾à String classÀÇ À̸§ÀÌ ¸¾¿¡ µéÁö ¾Ê´Â´Ù¸é, "typedef" ¸¦ À̸§À» ¹Ù²Ù±â À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
String.h¸¦ includeÇÏ´Â ¸ðµç ÆÄÀÏ¿¡ ´ÙÀ½ÀÇ ³»¿ëÀ» ³Ö¾î¶ó :
// StringÀ̶ó´Â À̸§ÀÌ ¸¾¿¡ µéÁö ¾Ê´Â´Ù¸é, ´ÙÀ½°ú °°ÀÌ ¹Ù²Ù¾î¶ó. typedef String StringSomethingElseIwant; // ÀÌÁ¦ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù. int main() { StringSomethingElseIwant aa_renstr; aa_renstr = "I renamed the String Class using typedef"; // ..... } |
´Ù¸¥ °°Àº À̸§À» °¡Áø class¿Í À̸§ÀÌ °ãÄ¡´Âµ¥, µÎ class¸¦ ¸ðµÎ »ç¿ëÇÏ°í ½Í´Ù¸é, ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ½á¶ó. String.h¸¦ includeÇÏ´Â ¸ðµç ÆÄÀÏ¿¡ ´ÙÀ½ÀÇ ³»¿ëÀ» ³Ö¾î¶ó.
#define String String_somethingelse_which_I_want #include "String.h" #undef String #include "ConflictingString.h" // À̰͵µ StringÀ̶õ classÀÌ´Ù. // ÄÚµå ³»¿ë.. int main() { String_somethingelse_which_I_want aa; String bb; // À̰ÍÀº °ãÄ¡´Â String classÀÌ´Ù. aa = " some sample string"; bb = " another string abraka-dabraka"; ....... } |