¾ÈÀüÇÑ ¹®ÀÚ¿ ÇÔ¼öµé
2006-07-13 ½Å¿µÁø
C¾ð¾î Ç¥ÁØ¿¡ Æ÷ÇÔµÈ ¹®ÀÚ¿ ÇÔ¼öµé Áß¿¡ ÀϺδ ¸Å¿ì À§ÇèÇÏ´Ù. ´ëÇ¥ÀûÀÎ ÇÔ¼ö°¡ strcpy¿Í sprintfÇÔ¼ö´Ù. ÀÌ µÎ ÇÔ¼öÀÇ °æ¿ì Ãâ·Â °ªÀ¸·Î ¹®ÀÚ¿ Æ÷ÀÎÅ͸¦ Àü¼ÛÇÑ´Ù. ÇÏÁö¸¸ Ãâ·Â ¹®ÀÚ¿ Æ÷ÀÎÅÍÀÇ Å©±â¸¦ ÀÔ·Â ¹ÞÁö ¾Ê±â ¶§¹®¿¡ ¹öÆÛ ¿À¹ö·±ÀÇ À§ÇèÀ» °¡Áö°í ÀÖ´Ù. ¹öÆÛ ¿À¹ö·±ÀÇ °æ¿ì º¸¾È»ó Ãë¾àÁ¡ÀÌ µÉ ¼ö ÀÖ´Ù. µû¶ó¼ °ß°íÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§Çؼ´Â µÇµµ·Ï ÀÌ ÇÔ¼öµéÀ» »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
¹öÆÛ ¿À¹ö·±À̶õ ÇÁ·Î±×·¥ ³»ºÎ¿¡¼ »ç¿ëÇÏ´Â ¸Þ¸ð¸® °ø°£À» ÇÁ·Î±×·¡¸Ó°¡ ±âÁ¸¿¡ ÀǵµÇß´ø °ÍÀ» ³Ñ¾î¼¼ µ¤¾î ¾²´Â °ÍÀ» ¸»ÇÑ´Ù. ½ºÅà °ø°£À» ħ¹üÇÏ´Â °ÍÀ» ½ºÅà ¿À¹ö·±, Èü °ø°£À» ħ¹üÇÏ´Â °ÍÀ» Èü ¿À¹ö·±À̶ó ÇÑ´Ù. ¾Æ·¡ ÄÚµå´Â ¾î¶»°Ô ½ºÅà ¿À¹ö·±ÀÌ ¹ß»ýÇÏ´Â Áö º¸¿©ÁØ´Ù.
À§ÀÇ Äڵ带 »ìÆìº¸¸é dest´Â ÃÖ´ë 4±ÛÀÚ¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé C¾ð¾îÀÇ °æ¿ì ³¡À» ¾Ë¸®±â À§Çؼ NULL Á¾·á ¹®ÀÚ¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ½ÇÁ¦·Î º¹»ç¸¦ ÇϰíÀÚ ÇÏ´Â ¼Ò½º ¹®ÀÚ¿Àº 4±ÛÀÚº¸´Ù Å« ¹®ÀÚ´Ù. µû¶ó¼ ÇÁ·Î±×·¡¸Ó°¡ Àâ¾ÆµÐ ¸Þ¸ð¸® °ø°£À» ħ¹üÇØ¼ µ¤¾î¾²°Ô µÈ´Ù. ÀÌ·¸°Ô µÉ °æ¿ì ½ºÅÃÀÌ ±úÁö°í Äڵ尡 ¾û¶×ÇÑ °÷À¸·Î ¸®ÅϵǴ °á°ú¸¦ ¸¸µé ¼ö ÀÖ´Ù.
Windows¿¡¼´Â ÀÌ·¯ÇÑ º¸¾È»ó Ãë¾àÇÑ ÇÔ¼öµéÀ» ´ëüÇÒ »õ·Î¿î ¾ÈÀüÇÑ ÇÔ¼öµéÀ» ÀÛ¼ºÇؼ Platform SDK¸¦ ÅëÇØ¼ ¹èÆ÷Çϰí ÀÖ´Ù. ÀÌ ÇÔ¼öµéÀº strsafe.h¿¡ µé¾îÀÖ´Ù. ¿ì¼± °£·«ÇÏ°Ô ¾î¶°ÇÑ ÇÔ¼öµéÀÌ µé¾î ÀÖ´ÂÁö »ìÆìº¸µµ·Ï ÇÏÀÚ.
±âÁ¸ÇÔ¼ö | ´ëü ÇÔ¼ö |
strcpy | StringCbCopy, StringCbCopyEx StringCchCopy, StringCchCopyEx |
strncpy | StringCbCopyN, StringCbCopyNEx StringCchCopyN, StringCchCopyNEx |
strcat | StringCbCat, StringCbCatEx StringCchCat, StringCchCatEx |
strncat | StringCbCatN, StringCbCatNEx StringCchCatN, StringCchCatNEx |
sprintf | StringCbPrintf, StringCbPrintfEx StringCchPrintf, StringCchPrintfEx |
vsprintf | StringCbVPrintf, StringCbVPrintfEx StringCchVPrintf, StringCchVPrintfEx |
gets | StringCbGets, StringCbGetsEx StringCchGets, StringCchGetsEx |
strlen | StringCbLength StringCchLength |
ÇÔ¼ö À̸§ÀÌ ±ÔÄ¢ÀûÀ¸·Î Áö¾îÁø ´öºÐ¿¡ ÇÔ¼öÀÇ Á¾·ù¸¦ ÇÑ´«¿¡ ÆÄ¾ÇÇÒ ¼ö ÀÖ´Ù. ÀüüÀûÀ¸·Î À» ³× °¡Áö Á¾·ùÀÇ ÇÔ¼ö°¡ ÀÖ´Ù. Cb, Cch°è¿°ú ÀÏ¹Ý ÇÔ¼ö¿Í Ex ÇÔ¼ö°¡ ±×°ÍÀÌ´Ù. Cb°è¿ÀÇ ÇÔ¼ö´Â ¹öÆÛ Å©±â¸¦ ÀÎÀÚ·Î ¹Þ´Â´Ù. Áï, ¹öÆÛ°¡ ¸î ¹ÙÀÌÆ® Å©±â¸¦ °¡Áö´À³Ä ÇÏ´Â °ÍÀ» ±âÁØÀ¸·Î »ï´Â´Ù. ¹Ý¸é¿¡ Cch°è¿ ÇÔ¼öµéÀº ¹öÆÛÀÇ ±æÀ̸¦ ÀÎÀÚ·Î ¹Þ´Â´Ù. ¸î ±ÛÀÚ¸¦ ÀúÀåÇÒ ¼ö ÀÖ´À³Ä ÇÏ´Â °ÍÀ» ±âÁØÀ¸·Î »ï´Â´Ù. Ex ÇÔ¼ö´Â ÀÏ¹Ý ÇÔ¼öÀÇ ±â´É¿¡ ¹öÆÛÀÇ À߸²°ú ÆÐµùÀ» ´Ù·ç´Â Ãß°¡ÀûÀÎ ±â´ÉÀ» °¡Áø ÇÔ¼öµéÀÌ´Ù.
ÀÏ¹Ý ÇÔ¼öÀÇ °æ¿ì Ç¥ÁØ ÇÔ¼ö¿Í µ¿ÀÏÇÑ ÀÎÀÚ¸¦ ¹Þµµ·Ï µÇ¾î ÀÖ´Ù. ´ÜÁö Ãß°¡ÀûÀ¸·Î ¹öÆÛÀÇ Å©±â¸¦ Çϳª ´õ ¹Þ´Â´Ù. µû¶ó¼ ¿©±â¼´Â StringCbCopy¿Í StringCchPrintfÀÇ »ç¿ë¹ý¸¸ »ìÆìº¸µµ·Ï ÇϰڴÙ. ´Ù¸¥ ÇÔ¼öµéÀÇ ÀÚ¼¼ÇÑ »ç¿ë¹æ¹ýÀ» ¾Ë°í ½Í´Ù¸é MSDNÀ» Âü°íÇϵµ·Ï ÇÏÀÚ.
StringCbCopy ÇÔ¼öÀÇ ¿øÇüÀÌ´Ù. ÀÌ ÇÔ¼ö´Â strcpy¿Í µ¿ÀÏÇÑ ±â´ÉÀ» ÇÑ´Ù. pszDest¿¡´Â º¹»çµÉ ¹öÆÛ Æ÷ÀÎÅ͸¦, cbDest¿¡´Â pszDestÀÇ Å©±â¸¦, ±×¸®°í pszSrc¿¡´Â º¹»çÇÒ ¹®ÀÚ¿ Æ÷ÀÎÅ͸¦ ³Ö¾îÁÖ¸é µÈ´Ù. cbDest¸¦ Á¦¿ÜÇϸé strcpy¿Í µ¿ÀÏÇÑ ÀǹÌÀÇ ÀÎÀÚ°¡ ¼ø¼´ë·Î ÀԷµȴٴ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. °á°ú °ªÀº ÇÔ¼öÀÇ ¼º°ø ¿©ºÎ´Ù. ¼º°øÇÑ °æ¿ì S_OK¸¦ ¸®ÅÏ ÇÑ´Ù. À§¿¡ ³ª¿µÈ ¸ðµç String°è¿ ÇÔ¼öÀÇ ¸®ÅÏ °ªÀº HRESULT´Ù. COM¿¡ »ç¿ëµÇ´Â °Í°ú µ¿ÀÏÇÑ Å¸ÀÔÀ̱⠶§¹®¿¡ FAILED, SUCCEEDED¸ÅÅ©·Î¸¦ »ç¿ëÇÏ¸é ¼Õ½±°Ô ¿¡·¯ ¿©ºÎ¸¦ üũÇÒ ¼ö ÀÖ´Ù. StringCbCopyÇÔ¼ö¸¦ »ç¿ëÇØ °£´ÜÇÑ ¹®ÀÚ¿À» º¹»çÇÏ´Â °úÁ¤Àº ¾Æ·¡¿Í °°´Ù.
À§ÀÇ Äڵ带 ½ÇÇàÇØ º¸¸é ¿Ö StringCbCopy°¡ ¾ÈÀüÇÑÁö¸¦ ¾Ë ¼ö ÀÖ´Ù. À§ ÇÁ·Î±×·¥À» ½ÇÇàÇϸé dest°ªÀ¸·Î Hello°¡ Ãâ·ÂµÈ´Ù. ¿Ö³ÄÇϸé destÀÇ Å©±âÀÎ 6ÀÌ StringCbCopyÇÔ¼ö ³»ºÎ·Î µé¾î°¬±â ¶§¹®¿¡ °Å±â±îÁö¸¸ º¹»ç°¡ ÁøÇàµÈ °ÍÀÌ´Ù. ´õ ÀÌ»ó º¹»çÇÒ °æ¿ì ¹öÆÛ ¿À¹ö·±ÀÌ ¹ß»ýÇϱ⠶§¹®ÀÌ´Ù.
StringCbPrintf ÇÔ¼öÀÇ ¿øÇüÀÌ´Ù. ÀÌ ÇÔ¼ö´Â sprintf¿Í µ¿ÀÏÇÑ ±â´ÉÀ» ÇÑ´Ù. pszDest¿¡´Â Ãâ·ÂµÉ ¹öÆÛ¸¦, cchDest¿¡´Â pszDest¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Â ±ÛÀÚ ¼ö¸¦, ³¡À¸·Î pszFormat¿¡´Â Æ÷¸Ë ¹®ÀÚ¿À» ³ÖÀ¸¸é µÈ´Ù. ¾Æ·¡¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¹®ÀÚ¿À» ´Ù·ç´Â ÀÏÀº ÇÁ·Î±×·¡¹Ö °úÁ¤¿¡¼ ±¤¹üÀ§ ÇÏ°Ô »ç¿ëµÈ´Ù. ÀϺΠÇÁ·Î±×·¥Àº ¹®ÀÚ¿ ó¸® °úÁ¤ÀÌ ÇÁ·Î±×·¥ÀÇ ÀüºÎÀ̱⵵ ÇÏ´Ù. ÀÌó·³ ¹®ÀÚ¿ ó¸® ÀÛ¾÷Àº ¸¹ÀÌ »ç¿ëµÇ´Â ¸¸Å °¡Àå ¸¹Àº ¹ö±×¿Í º¸¾È ÇãÁ¡ÀÌ ³ª¿À´Â °÷À̱⵵ ÇÏ´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀº ±âÁ¸ÀÇ ºÒ¿ÏÀüÇÑ ÇÔ¼öµéÀ» »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ´Ù. ÀÌ·± ÀÌÀ¯ ¶§¹®¿¡ strsafe.h¸¦ ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŰ°Ô µÇ¸é Ç¥ÁØ ¹®ÀÚ¿ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ºÎºÐ¿¡¼´Â deprecated °æ°í°¡ ¹ß»ýÇÑ´Ù. ÇÏÁö¸¸ deprecated °æ°í¸¦ °Á¦·Î ¹«½ÃÇÏ°í ½ÍÀº »óȲµµ ÀÖ´Ù. ¾î¿ ¼ö ¾øÀÌ ½á¾ß ÇÏ´Â ¶óÀ̺귯¸® ÄÚµå µî¿¡¼ Ç¥ÁØ ¹®ÀÚ¿ ÇÔ¼ö¸¦ »ç¿ëÇÑ °æ¿ì°¡ ´ëÇ¥ÀûÀÌ´Ù. ÀÌ·² ¶§ °æ°í¸¦ °Á¦·Î ²ô±â À§Çؼ´Â strsafe.h¸¦ Æ÷ÇÔ½ÃŰ´Â ºÎºÐ ¾Õ¿¡ STRSAFE_DEPRECATE¸¦ Á¤ÀÇÇØÁÖ¸é µÈ´Ù. ¾Æ·¡¿Í °°ÀÌ include¸¦ ½Ã۸é Ç¥ÁØ ¹®ÀÚ¿ ÇÔ¼ö¿¡ ´ëÇÑ °æ°í°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù.
String °è¿ÀÇ ÇÔ¼ö°¡ ¾ÈÀüÇϰí ÁÁÀº °ÍÀÓÀº »ç½ÇÀÌ´Ù. ÇÏÁö¸¸ ±âÁ¸ÀÇ ANSI C/C++ ÀÇ Ç¥ÁØ ¹®ÀÚ¿ ÇÔ¼öµé·Î ÀÛ¼ºµÈ ÇÁ·ÎÁ§Æ®¸¦ String °è¿ÀÇ ÇÔ¼ö·Î ±³Ã¼ÇÏ´Â ÀÛ¾÷Àº ½ÅÁßÇÏ°Ô °áÁ¤ÇØ¾ß ÇÑ´Ù. ¾ð¶æ º¸±â¿¡´Â ÇÔ¼ö¸íÀ» ¹Ù²Ù´Â °£´ÜÇÑ ÀÛ¾÷ó·³ º¸ÀÌÁö¸¸ ½Ç»óÀº ±×·¸Áö ¾Ê´Ù. ±âÁ¸ ¶óÀ̺귯¸® ÇÔ¼öµéÀ» »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ ÄÚµåÀÇ °æ¿ì ÇÔ¼ö·Î Ãâ·Â ¹öÆÛÀÇ Å©±â¸¦ Àü¼ÛÇÏÁö ¾Ê±â ¶§¹®¿¡ È£ÃâÇÏ´Â Âʰú ÇÔ¼ö Äڵ带 ÀüüÀûÀ¸·Î ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ÀÌ·± ÀÌÀ¯·Î ´ëºÎºÐÀÇ °æ¿ì String°è¿·Î Äڵ带 °íħÀ¸·Î½á ¾ò´Â º¸¾È È¿°úº¸´Ù ´õ ¸¹Àº ¹ö±×°¡ ¼öÁ¤ µµÁß¿¡ ¹ß»ýÇÑ´Ù. µû¶ó¼ ±âÁ¸ÀÇ ÇÁ·ÎÁ§Æ® Äڵ带 º¯°æÇÏ´Â ÀÏÀº ½ÅÁßÈ÷ °ËÅäÇÑ ÈÄ °áÁ¤Çϵµ·Ï ÇÏÀÚ.
¸»Àº ¾²´Â »ç¶÷ÀÇ È¥À» ´ã´Â ±×¸©À̶ó°í ÇÑ´Ù. ÀÌ¿Í ¸¶Âù°¡Áö·Î ÄÚµå´Â ÇÁ·Î±×·¡¸ÓÀÇ È¥À» ´ã´Â ±×¸©ÀÌ µÉ ¼ö ÀÖ´Ù. ¾ÕÀ¸·Î »õ·Ó°Ô ÀÛ¼ºÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡´Â ¾ÈÀüÇÑ ¹®ÀÚ¿ ÇÔ¼ö¸¦ ¾²°í ¹®ÀÚ¿ Æ÷ÀÎÅͰ¡ Àü´ÞµÇ´Â °÷À¸·Î´Â Ç×»ó Å©±â¸¦ °°ÀÌ Àü´ÞÇϵµ·Ï ÇÏÀÚ. À̺¸´Ù Á» ´õ ÁÁÀº ¹æ¹ýÀº µÇµµ·Ï Á÷Á¢ÀûÀÎ ¹®ÀÚ¿ Æ÷ÀÎÅÍÀÇ »ç¿ëÀ» ÁÙÀ̰í stringÀ̳ª CStringµîÀÇ C++ Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.