À¯´ÏÄڵ忡 ´ëºñÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¿©¼¸°¡Áö ¿øÄ¢
2006-07-13 ½Å¿µÁø
MBCS´Â ÇÑ ¹®ÀÚ¸¦ Ç¥ÇöÇϴµ¥ ¿©·¯ ¹ÙÀÌÆ®¸¦ »ç¿ëÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù. ÀϹÝÀûÀÎ ¿µ¹®ÀÚÀÇ °æ¿ì ¸ðµÎ ÇÑ ¹ÙÀÌÆ®·Î Ç¥½ÃµÇÁö¸¸, Çѱ۰ú °°Àº °æ¿ì¿¡´Â µÎ ¹ÙÀÌÆ®¸¦ »ç¿ëÇÑ´Ù. ¶ÇÇÑ µÎ ¹ÙÀÌÆ®¸¦ »ç¿ëÇÏ´õ¶óµµ ÀÎÄÚµù ±ÔÄ¢¿¡ µû¶ó¼ ¼·Î ´Ù¸¥ µÎ ¹ÙÀÌÆ®°¡ »ý¼ºµÈ´Ù. µû¶ó¼ ÀÎÄÚµù ±ÔÄ¢ÀÌ ¸ÂÁö ¾Ê´Â °æ¿ì¿¡´Â Á¦´ë·Î µÈ ¹®¼¸¦ ÀÐÀ» ¼ö ¾ø´Â ºÒÆíÇÔÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ºÒÆíÇÔÀ» ÇØ°áÇϱâ À§Çؼ ³ª¿Â °ÍÀÌ À¯´ÏÄÚµå´Ù. À¯´ÏÄڵ忡 ´ëÇØ¼± ÀÌ¹Ì ¸¹Àº ¹®¼¿¡¼ ¼Ò°³°¡ µÇ¾ú±â ¶§¹®¿¡ º°µµ·Î ¼³¸íÇÏÁø ¾Ê°Ú´Ù. Ȥ½Ã Á» ´õ ÀÚ¼¼ÇÑ ³»¿ëÀÌ ±Ã±ÝÇÏ´Ù¸é http://www.jinsuk.pe.kr/Unicode/Unicode_intro-kr.html¸¦ ¹æ¹®ÇØ º¸µµ·Ï ÇÏÀÚ.
Windows NT¿¡ ±â¹ÝÇÑ ¿î¿µÃ¼Á¦ÀÇ °æ¿ì Ä¿³Î Äڵ尡 À¯´ÏÄڵ带 ÅëÇØ¼ ÀÛ¼º µÇ¾ú´Ù. ¹®ÀÚ¿À» ÀÔ·Â ¹Þ´Â APIÀÇ °æ¿ì À¯´ÏÄÚµå ¹öÀüÀÌ ±âº»ÀûÀ¸·Î »ç¿ëµÈ´Ù. ¸¸¾à MBCS ¹öÀüÀÇ API¸¦ È£ÃâÇÑ´Ù¸é ³»ºÎÀûÀ¸·Î MBCS¹®ÀÚ¿À» À¯´ÏÄÚµå·Î º¯°æÇÑ ÈÄ¿¡ ´Ù½Ã À¯´ÏÄÚµå ¹öÀüÀÇ API¸¦ È£ÃâÇÏ°Ô µÈ´Ù. µû¶ó¼ MBCS ¹öÀüÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀº NT ±â¹ÝÀÇ ¿î¿µÃ¼Á¦¿¡¼´Â ºñÈ¿À² ÀûÀÌ´Ù. ÀÌ·¯ÇÑ Á¡ ¶§¹®¿¡ ÃÖ±Ù¿¡´Â ´ëºÎºÐÀÇ ¾÷ü¿¡¼ NT ±â¹ÝÀÇ ÇÁ·Î±×·¥Àº À¯´ÏÄÚµå ¹öÀüÀ» Ãâ½ÃÇϰí ÀÖ´Ù. À¯´ÏÄÚµå¿Í MBCS ºôµå¿¡ »ó°ü¾øÀÌ À¯¿¬ÇÏ°Ô ÄÄÆÄÀÏ µÇ´Â ÇÁ·Î±×·¥À» ¸¸µé±â À§Çؼ ÁöÄѾßÇÒ ¿©¼¸ °¡Áö ±âº» ¿øÄ¢¿¡ ´ëÇØ¼ ¾Ë¾Æº¸ÀÚ.
ù°, ¹®ÀÚ¿ ŸÀÔÀº TÇüÀ» ¾´´Ù. TÇüÀÇ °æ¿ì À¯´ÏÄÚµå, MBCS ºôµå¿¡ »ó°ü¾øÀÌ ÀûÀýÇÑ Å¸ÀÔÀ¸·Î º¯È¯µÇ±â ¶§¹®¿¡ ºôµå°¡ º¯°æµÈ´Ù°í ÇØ¼ µû·Î ŸÀÔÀ» ¼öÁ¤ÇØ ÁÖ´Â ºÒÆíÇÔÀÌ ¾ø´Ù. char¸¦ »ç¿ëÇÒ Àå¼Ò¿¡ TCHAR¸¦, char *¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù¸é LPTSTRÀ», const char *À» »ç¿ëÇØ¾ß ÇÑ´Ù¸é LPCTSTRÀ» »ç¿ëÇϵµ·Ï ÇÑ´Ù.
µÑ°, ¹®ÀÚ¿ ¸®ÅÍ·²Àº Ç×»ó TEXT ¸ÅÅ©·Î·Î ¹¾î µÐ´Ù. ¹®ÀÚ¿ ¸®ÅÍ·²Àº ÇÁ·Î±×·¥ ³»¿¡¼ »ç¿ëµÇ´Â ¹®ÀÚ¿ »ó¼ö¸¦ ÀǹÌÇÑ´Ù. ±×·±µ¥ ÀÌ·¯ÇÑ ¹®ÀÚ¿ »ó¼öÀÇ °æ¿ì À¯´ÏÄÚµå ºôµå¿¡¼± ¾Õ¿¡ LÀ» ºÙ¿©¼ wchar_tÇüÀÌ µÇ¾î¾ß ÇÑ´Ù. Áï, º¸ÅëÀÇ °æ¿ì¿£ "%s\n"°ú °°ÀÌ »ç¿ëÇÏ¸é µÇÁö¸¸, À¯´ÏÄÚµå ºôµå¿¡¼± L"%s\n"·Î º¯°æÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» ÀÏÀÏÀÌ ºôµå°¡ ¹Ù²ð ¶§ ¸¶´Ù ÇØÁÖ´Â °ÍÀº ¸Å¿ì ¹ø°Å·Ó°í ¿À·ù°¡ ¸¹ÀÌ ³ª´Â ÀÏÀÌ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» µµ¿ÍÁÖ´Â °ÍÀÌ TEXT ¸ÅÅ©·Î´Ù. À§¿¡ ¾ð±ÞµÈ ¹®ÀÚ¿ »ó¼öÀÇ °æ¿ì¿¡µµ TEXT("%s\n")°ú °°ÀÌ »ç¿ëÇϸé MBCS ºôµå¿¡¼± "%s\n"ÀÌ, À¯´ÏÄÚµå ºôµå¿¡¼± L"%s\n"ÀÌ µÈ´Ù. ¸ÅÅ©·Î°¡ ¾Ë¾Æ¼ ó¸®ÇØ ÁØ´Ù. µû¶ó¼ ¹®ÀÚ¿ ¸®ÅÍ·²Àº Ç×»ó TEXT ¸ÅÅ©·Î·Î ¹¾îÁÖµµ·Ï ÇÏÀÚ.
¼Â°, CRT ¹®ÀÚ¿ ÇÔ¼ö´Â TŸÀÔ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. TÇü°ú ¸¶Âù°¡Áö·Î ÀÌ·¯ÇÑ ÇÔ¼öµéÀº ºôµå¿¡ µû¶ó ÀûÀýÇÑ ÀÎÀÚ¸¦ ÀÔ·ÂÀ¸·Î ¹Þ´Â´Ù. ¿¹¸¦ µéÀÚ¸é ¹®ÀÚ¿À» º¹»çÇÏ´Â strcpy¿¡ ´ëÀÀÇÏ´Â ÇÔ¼ö·Î´Â _tcscpy°¡ ÀÖ´Ù. _tcscpy´Â À¯´ÏÄÚµå ºôµå¿¡¼± ÀÎÀÚ¸¦ wchar_t·Î ¹Þ°í, MBCSºôµå¿¡¼± ÀÎÀÚ¸¦ char·Î ¹Þ´Â´Ù. µû¶ó¼ _tcscpy¸¦ »ç¿ëÇϰí ÀÎÀÚ¸¦ TÇüÀ» »ç¿ëÇÑ´Ù¸é ºôµå°¡ º¯°æµÈ´Ù°í ÇØ¼ Á÷Á¢ ¼öÁ¤ÇØ¾ß ÇÏ´Â ºÎºÐÀÌ ¾ø´Ù. ¾Æ·¡ Ç¥¿¡´Â ÀϹÝÀûÀ¸·Î ÀÚÁÖ »ç¿ëÇÏ´Â ¹®ÀÚ¿ ÇÔ¼öµé°ú °Å±â¿¡ ´ëÇÑ TŸÀÔ ÇÔ¼ö¸¦ Ç¥½ÃÇØ µÎ¾ú´Ù. Ç¥¸¦ »ìÆìº¸¸é ¾Ë°ÚÁö¸¸ º¯È¯ ±ÔÄ¢Àº ¹«Ã´ °£´ÜÇÏ´Ù. str·Î ½ÃÀÛÇÏ´Â ÇÔ¼ö´Â _tcs·Î ġȯ ÇÏ¸é µÇ°í, ±×·¸Áö ¾ÊÀº ÇÔ¼öµéÀº ¾Õ¿¡ _t¸¦ ºÙÀÌ¸é µÈ´Ù. ¹°·Ð ±×·¸Áö ¾ÊÀº ÇÔ¼öµéµµ ÀϺΠÀÖ´Ù. ±×·¯ÇÑ ÇÔ¼öµéÀº MSDNÀ» ÀÌ¿ëÇÏ¸é ¼Õ½±°Ô TŸÀÔ ÇÔ¼ö¸íÀ» ¾Ë ¼ö ÀÖ´Ù.
| ÀÏ¹Ý ÇÔ¼ö¸í | TŸÀÔ ÇÔ¼ö¸í | ±â´É |
| strcpy | _tcscpy | ¹®ÀÚ¿ º¹»ç |
| strncpy | _tcsncpy | ƯÁ¤ ±æÀÌ ¹®ÀÚ¿ º¹»ç |
| strcat | _tcscat | ¹®ÀÚ¿ Ãß°¡ |
| strstr | _tcsstr | ¹®ÀÚ¿ °Ë»ö |
| strchr | _tcschr | ¹®ÀÚ °Ë»ö |
| strrchr | _tcsrchr | ¿ª¼ø ¹®ÀÚ °Ë»ö |
| strcmp | _tcscmp | ¹®ÀÚ¿ ºñ±³ |
| stricmp | _tcsicmp | ´ë¼Ò¹®ÀÚ ±¸ºÐ ¾øÀÌ ¹®ÀÚ¿ ºñ±³ |
| mkdir | _tmkdir | µð·ºÅ͸® »ý¼º |
| fopen | _tfopen | ÆÄÀÏ ¿±â |
³Ý°, ±æÀÌ¿Í Å©±â¸¦ ±¸ºÐÇÑ´Ù. ¹®ÀÚ¿¿¡´Â ±æÀÌ¿Í Å©±â°¡ ÀÖ´Ù. MBCS ºôµå¿¡¼ ±âº»ÀûÀÎ ¹®ÀÚ ´ÜÀ§·Î »ç¿ëµÇ´Â charÇüÀÇ °æ¿ì ±× Å©±â°¡ 1¹ÙÀÌÆ® À̱⠶§¹®¿¡ Å©±â¿Í ±æÀ̰¡ µ¿µîÇÑ Àǹ̸¦ °¡Áø´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î ±âÁ¸ÀÇ MBCS ºôµå¿¡¼ »ç¿ëÇÏ´ø ¸¹Àº Äڵ尡 Å©±â¿Í ±æÀ̸¦ Á¤È®ÇÏ°Ô ±¸ºÐÇÏÁö ¾Ê°í È¥¿ëÇØ¼ »ç¿ëÇϰí ÀÖ´Ù. ÇÏÁö¸¸ À¯´ÏÄÚµå ȯ°æÀ¸·Î ³Ñ¾î¿À¸é Å©±â¿Í ±æÀÌ´Â Ç×»ó ´Þ¶óÁø´Ù. µû¶ó¼ ÇÔ¼öÀÇ ÀÎÀÚ°¡ ±æÀÌ¿Í Å©±â Áß ¾î¶°ÇÑ °ÍÀ» ¿ä±¸ÇÏ´ÂÁö ÆÇ´ÜÇØ¼ Á¤È®ÇÏ°Ô »ç¿ëÇϵµ·Ï ÇØ¾ß ÇÑ´Ù.
´Ù¼¸Â°, std::stringÀ» »ç¿ëÇÏ´Â °æ¿ì´Ù. std::stringÀÇ °æ¿ì ANSI ¹®ÀÚ¿À» Ç¥ÇöÇϵµ·Ï ¼±¾ðµÈ Ŭ·¡½º´Ù. À¯´ÏÄÚµå ¹®ÀÚ¿À» Ç¥ÇöÇϴµ¥ »ç¿ëÇÒ ¼ö Àִ ŸÀÔÀ¸·Î std::wstringÀÌ ÀÖ´Ù. ÀÌ µÑÀ» ºôµå ŸÀÔÀÌ º¯°æµÉ ¶§ ¸¶´Ù ¹Ù²ãÁà¾ß ÇÏ´Â °ÍÀº ¹ø°Å·Î¿î ÀÏÀÌ´Ù. ÀÌÂëµÇ¸é std::tstringÀÌ ¾ø´ÂÁö ±Ã±ÝÇØ Áú °ÍÀÌ´Ù. ÇÏÁö¸¸ std::tstringÀº ¾ø´Ù. ¾øÀ¸¸é ¿ì¸®°¡ ¸¸µé¾î¾ß ÇÑ´Ù. std::stringÀÇ °æ¿ì std::basic_string<char>·Î ¼±¾ðµÈ °ÍÀ̰í, std::wstringÀÇ °æ¿ì std::basic_string<wchar_t>·Î ¼±¾ðµÈ °ÍÀÌ´Ù. µû¶ó¼ ¿ì¸®´Â ¾Æ·¡¿Í °°ÀÌ std::tstringÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
¸¶Áö¸·À¸·Î ÀϺΠÇÔ¼ö³ª ¸Þ½ÃÁö ÀÎÀÚÀÇ °æ¿ì ¹Ýµå½Ã char³ª, wchar_t·Î Ãë±ÞÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ·¯ÇÑ °æ¿ì ºÎµæÀÌÇÏ°Ô ºôµå¿¡ µû¶ó¼ ¹®ÀÚ¿À» º¯È¯Çؼ »ç¿ëÇØ¾ß ÇÏ¸ç ºôµå°¡ º¯°æµÇ¸é ¹Ýµå½Ã Äڵ带 ¼öÁ¤ÇØ¾ß ÇÑ´Ù. µû¶ó¼ óÀ½ ÀÛ¼º½Ã¿¡ ¾ÈÀüÇÏ°Ô µÎ °¡Áö ºôµå·ÎµÈ ¹öÀüÀ» ¸ðµÎ ÀÛ¼ºÇØ ³õ°Å³ª ¾Æ´Ï¸é ´Ù¸¥ ºôµå¿¡¼ ÄÄÆÄÀÏ ÇÒ °æ¿ì ¿¡·¯°¡ ³ªµµ·Ï ó¸®ÇØ µÎ¸é Æí¸®ÇÏ´Ù. ¾Æ·¡¿Í °°Àº Àü󸮱⸦ »ç¿ëÇÏ¸é ½±°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. À¯´ÏÄÚµå ºôµå¿¡¼± _UNICODE°¡ ¼±¾ðµÈ´Ù´Â Á¡À» ±â¾ïÇØ µÎÀÚ.
¸¸¾à ÇöÀç ÇÁ·Î±×·¥ÀÌ MBCS ±â¹ÝÀ̰í À¯´ÏÄÚµå ºÎºÐÀ» Áö±ÝÀº ½Å°æ ¾²Áö ¾Ê¾Æµµ µÈ´Ù¸é #error Àü󸮱⸦ »ç¿ëÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô Çϸé À¯´ÏÄÚµå·Î ºôµå ÇÒ °æ¿ì ÄÄÆÄÀÏ ¿À·ù°¡ ¹ß»ýÇϱ⠶§¹®¿¡ ¾î¶² ºÎºÐÀÌ ¼öÁ¤µÇ¾î¾ß ÇÏ´ÂÁö ¹Ù·Î ãÀ» ¼ö Àֱ⠶§¹®¿¡ Æí¸®ÇÏ´Ù.