{"id":378,"date":"2006-12-05T16:42:28","date_gmt":"2006-12-05T16:42:28","guid":{"rendered":"http:\/\/www.msinterdev.org\/wp\/2006\/12\/05\/%eb%ac%b8%ec%9e%90%ec%97%b4%ec%8a%a4%ed%8a%b8%eb%a7%81-%ec%a0%84%ea%b2%a9-%eb%b6%84%ec%84%9d-2%eb%b6%80\/"},"modified":"2006-12-05T16:42:28","modified_gmt":"2006-12-05T16:42:28","slug":"%eb%ac%b8%ec%9e%90%ec%97%b4%ec%8a%a4%ed%8a%b8%eb%a7%81-%ec%a0%84%ea%b2%a9-%eb%b6%84%ec%84%9d-2%eb%b6%80","status":"publish","type":"post","link":"http:\/\/www.msinterdev.org\/wp\/2006\/12\/05\/%eb%ac%b8%ec%9e%90%ec%97%b4%ec%8a%a4%ed%8a%b8%eb%a7%81-%ec%a0%84%ea%b2%a9-%eb%b6%84%ec%84%9d-2%eb%b6%80\/","title":{"rendered":"\ubb38\uc790\uc5f4(\uc2a4\ud2b8\ub9c1) \uc804\uaca9 \ubd84\uc11d 2\ubd80"},"content":{"rendered":"<p>\ubcf8\uae00\uc744&nbsp; Michael Dunn\uc758 \uac15\uc88c<br \/>\nThe Complete Guide to C++ Strings, Part I \uacfc II \ub97c \ubc88\uc5ed\ud55c \uae00\uc785\ub2c8\ub2e4.<\/p>\n<h2>\uc18c\uac1c<\/h2>\n<p>C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1\uc740 \uc5d0\ub7ec\ub97c \uc720\ubc1c\ud558\uae30 \uc27d\uace0, \uad00\ub9ac\ud558\uae30\uac00 \ub9e4\uc6b0 \uae4c\ub2e4\ub85c\uc6b8\ubfd0\ub9cc \uc544\ub2c8\ub77c, \ud574\ucee4\uc5d0\uac8c \uc624\ubc84\ub7f0 \ubc84\uadf8\ub97c \ub178\ucd9c\ud558\ub294 \ud0c0\uac9f\uc774 \ub420 \uc218\ub3c4 \uc788\uae30<br \/>\n\ub54c\ubb38\uc5d0, \uc218\ub9ce\uc740 \uc2a4\ud2b8\ub9c1 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4\uc774 \uc0dd\uaca8\ub0ac\ub2e4. \ud558\uc9c0\ub9cc \ubd88\ud589\ud788\ub3c4 \uc5b4\ub5a4 \uc0c1\ud669\uc5d0\uc11c \uc5b4\ub5a4 \ud074\ub798\uc2a4\ub97c \uc368\uc57c\ud558\uace0 \ud639\uc740 C\uc2a4\ud2b8\ub9c1\uc744 \uc5b4\ub5bb\uac8c \ub7a9\ud37c \ud074\ub798\uc2a4\ub97c<br \/>\n\uc774\uc6a9\ud574 \ucc98\ub9ac\ud574\uc57c \ud558\ub294\uc9c0\ub294 \uac00\ub054\uc529 \uc6b0\ub9ac\ub97c \ud574\uae54\ub9ac\uac8c \ud55c\ub2e4.<\/p>\n<p>\uc774\ubc88 \uac15\uc88c 2\ubd80\uc758 \ub0b4\uc6a9\uc740 Win32 API, MFC, STL, WTL\uacfc VC\ub7f0\ud0c0\uc784 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ubaa8\ub4e0 \uc2a4\ud2b8\ub9c1 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4\uc744 \ub2e4\ub8e8\uace0 \uc788\ub2e4.<br \/>\n\uac01 \ud074\ub798\uc2a4\ub294 \uc5b4\ub5bb\uac8c \uc0dd\uc131\ud558\uace0 \uc0ac\uc6a9\ud558\uba70, \uac01\uac01 \uc5b4\ub5bb\uac8c \ubcc0\ud658\ud560\uc218 \uc788\ub294\uc9c0 \uc124\uba85\ud560 \uac83\uc774\ub2e4. <\/p>\n<p>2\ubd80\uc758 \ub0b4\uc6a9\uc744 \uc81c\ub300\ub85c \uc18c\ud654\ud558\uae30 \uc704\ud574\uc11c\ub294 1\ubd80 1,2\uac15\uc5d0\uc11c \uc124\uba85\ud55c \uce90\ub9ad\ud130 \ud0c0\uc785\ub4e4\uacfc \uc778\ucf54\ub529 \ubc29\uc2dd\uc5d0 \ub300\ud55c \ucda9\ubd84\ud55c \uc774\ud574\uac00 \ud544\uc694\ud560 \uac83\uc774\ub2e4.<\/p>\n<h2>\uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\uc758 \uac00\uc7a5 \uc911\uc694\ud55c \uaddc\uce59<\/h2>\n<p>\ub9cc\uc57d \ubb38\uc11c\ud654\ub418\uc5b4 \uc788\uc5b4 \ud615\ubcc0\ud658\uc5d0 \ubb38\uc81c\uac00 \uc5c6\ub2e4\ub294 \ud655\uc2e0\uc774 \uc5c6\uc73c\uba74 <b>\uac15\uc81c \ud615\ubcc0\ud658\uc740 \ud53c\ud560\uac83.<\/b><\/p>\n<p>\uc5b4\ub5a4 \uc2a4\ud2b8\ub9c1\ub7a9\ud37c \ud074\ub798\uc2a4 X\uc640 \ub610\ub2e4\ub978 \ud074\ub798\uc2a4 Z\uc0ac\uc774\uc758 \ud615\ubcc0\ud658\uc5d0 \uad00\ud55c \ub0b4\uc6a9\uc740 \ud2b9\ud788 \ucd08\uae09 \ud504\ub85c\uadf8\ub798\uba38\ub4e4\uc774 \ub9ce\uc774 \uad81\uae08\ud574 \ud558\ub294 \ub0b4\uc6a9\uc774\ub2e4. \uc8fc\ub85c \ucd08\uae09<br \/>\n\ud504\ub85c\uadf8\ub798\uba38\ub4e4\uc740 \uac15\uc81c \ud615\ubcc0\ud658\uc744 \uc2dc\ub3c4\ud55c \ud6c4 \uc65c \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\uac00\uc5d0 \ub300\ud574 \ub9ce\uc774 \uad81\uae08\ud574 \ud558\uace4 \ud55c\ub2e4. \uc218\ub9ce\uc740 \uc2a4\ud2b8\ub9c1 \ud0c0\uc785\ub4e4, \ud2b9\ud788 BSTR \uac19\uc740<br \/>\n\ud0c0\uc785\uc740 \uba85\ud655\ud788 \ubb38\uc11c\ud654 \ub418\uc5b4\uc788\uc9c0 \uc54a\uc740 \uac8c \ud604\uc2e4\uc774\ub2e4. \ub530\ub77c\uc11c \ub9ce\uc740 \uc0ac\ub78c\ub4e4\uc740 \uc27d\uac8c \uc798\ubabb\ub41c \ucf54\ub4dc\ub97c \uc791\uc131\ud560 \uac00\ub2a5\uc131\uc774 \ub9ce\uc558\ub2e4. <\/p>\n<p>\ubb34\uc5c7\ubcf4\ub2e4 \uc911\uc694\ud55c \uc810\uc740 \ub7a9\ud37c\ud074\ub798\uc2a4\uc5d0\uc11c \ud615\ubcc0\ud658 \uc5f0\uc0b0\uc790\ub97c \uc7ac\uc815\uc758 \ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 \ud615\ubcc0\ud658\uc740 \uc0ac\uc2e4 \uc2a4\ud2b8\ub9c1 \uc0ac\uc774\uc5d0\uc11c \uc544\ubb34 \uc77c\ub3c4 \ud558\uc9c0 \uc54a\ub294\ub2e4. \uadf8\ub798\uc11c<br \/>\n\ub9cc\uc57d \uc544\ub798\uc640 \uac19\uc740 \ucf54\ub4dc\ub97c \uc791\uc131 \ud588\ub2e4\uba74:<\/p>\n<pre><span class=\"cpp-keyword\">void<\/span> SomeFunc ( LPCWSTR widestr );<br \/> <br \/>main()<br \/>{<br \/>  SomeFunc ( (LPCWSTR) <span class=\"cpp-string\">\"C:\\\\foo.txt\"<\/span> );  <span class=\"cpp-comment\">\/\/ WRONG!<\/span><br \/>}<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\ub294 \ubc31\uc774\uba74 \ubc31 \uc798\ubabb\ub41c \uacb0\uacfc\ub97c \ucd08\ub798\ud560 \uac83\uc774\ub2e4. \uc0ac\uc2e4 \uc704\uc758 \ucf54\ub4dc\ub294 \uc5d0\ub7ec \uc5c6\uc774 \ucef4\ud30c\uc77c \ub41c\ub2e4. \ud558\uc9c0\ub9cc \ucef4\ud30c\uc77c\uc774 \ub41c\ub2e4\uace0 \uadf8 \ucf54\ub4dc\uac00<br \/>\n\uc633\ubc14\ub974\ub2e4\uace0 \uc7a5\ub2f4\ud560\uc218\ub294 \uc5c6\ub294 \uac83\uc774\ub2e4. <\/p>\n<p>\uac15\uc758\ub97c \uc9c4\ud589\ud558\uba74\uc11c \uc5b4\ub5a4 \ud615\ubcc0\ud658\uc774 \uc633\ubc14\ub978 \uac83\uc778\uc9c0 \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4. <\/p>\n<h2>C-style strings and typedefs<\/h2>\n<p>\uc9c0\ub09c \uac15\uc758\uc5d0\uc11c \uc0b4\ud3b4 \ubcf4\uc558\ub4ef\uc774, Win API\ub294 TCHAR \ubc29\uc2dd\uc73c\ub85c \uc815\uc758\ub418 \uc788\ub2e4. \uadf8\uac83\uc740 \ucef4\ud30c\uc77c \uc2dc\uc5d0 \ubb38\ub9e5\uc5d0 \ub530\ub77c MBCS\ubc29\uc2dd\uc73c\ub85c \uc804\ud658\ub420\uc218\ub3c4<br \/>\n\uc788\uace0, \uc720\ub2c8\ucf54\ub4dc\uac00 \ub420\uc218\ub3c4 \uc788\ub2e4. \ud3b8\uc758\ub97c \uc704\ud574 \uc9c0\ub09c \uac15\uc758\uc5d0 \ubcf4\uc5ec\uc92c\ub358 \ud45c\ub97c \ub2e4\uc2dc \ubcf4\uc5ec \uc8fc\ub3c4\ub85d \ud558\uaca0\ub2e4. <\/p>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<th>\ud0c0\uc785 <\/th>\n<th>MBCS\ud658\uacbd\uc5d0\uc11c <\/th>\n<th>\uc720\ub2c8\ucf54\ub4dc \ud658\uacbd\uc5d0\uc11c <\/th>\n<\/tr>\n<tr>\n<td><code>WCHAR<\/code> <\/td>\n<td><code>wchar_t<\/code> <\/td>\n<td><code>wchar_t<\/code> <\/td>\n<\/tr>\n<tr>\n<td><code>LPSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 char\ud615\uc758 \ubb38\uc790\uc5f4(<code><span class=\"cpp-keyword\">char<\/span>*<\/code>) <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 char\ud615\uc758 \ubb38\uc790\uc5f4<br \/>\n    (<code><span class=\"cpp-keyword\">char<\/span>*<\/code>) <\/td>\n<\/tr>\n<tr>\n<td><code>LPCSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const char\ud615\uc758 \ubb38\uc790\uc5f4<br \/>\n    (<code><span class=\"cpp-keyword\">const<\/span> <span class=\"cpp-keyword\">char<\/span>*<\/code>)\n    <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const char\ud615\uc758 \ubb38\uc790\uc5f4<br \/>\n    (<code><span class=\"cpp-keyword\">const<\/span> <span class=\"cpp-keyword\">char<\/span>*<\/code>)\n    <\/td>\n<\/tr>\n<tr>\n<td><code>LPWSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 \uc720\ub2c8\ucf54\ub4dc\ud615\uc758 \ubb38\uc790\uc5f4 (<code>wchar_t*<\/code>) <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 \uc720\ub2c8\ucf54\ub4dc\ud615\uc758 \ubb38\uc790\uc5f4 (<code>wchar_t*<\/code>) <\/td>\n<\/tr>\n<tr>\n<td><code>LPCWSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const \uc720\ub2c8\ucf54\ub4dc\ud615\uc758 \ubb38\uc790\uc5f4 (<code><span class=\"cpp-keyword\">const<\/span><br \/>\n    wchar_t*<\/code>) <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const \uc720\ub2c8\ucf54\ub4dc\ud615\uc758 \ubb38\uc790\uc5f4 (<code><span class=\"cpp-keyword\">const<\/span><br \/>\n    wchar_t*<\/code>)&nbsp; <\/td>\n<\/tr>\n<tr>\n<td><code>TCHAR<\/code> <\/td>\n<td><code><span class=\"cpp-keyword\">char<\/span><\/code><\/td>\n<td><code>wchar_t<\/code> <\/td>\n<\/tr>\n<tr>\n<td><code>LPTSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 TCHAR\ud615\uc758 \ubb38\uc790\uc5f4 (<code>TCHAR* -&gt; char*<\/code>)&nbsp; <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 TCHAR\ud615\uc758 \ubb38\uc790\uc5f4 (<code>TCHAR*-&gt;wchar_t*<\/code>) <\/td>\n<\/tr>\n<tr>\n<td><code>LPCTSTR<\/code> <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const TCHAR\ud615\uc758 \ubb38\uc790\uc5f4 (<code><span class=\"cpp-keyword\">const<\/span><br \/>\n    TCHAR*<\/code>) <\/td>\n<td>0\uc73c\ub85c \ub05d\ub098\ub294 const TCHAR\ud615\uc758 \ubb38\uc790\uc5f4 (<code><span class=\"cpp-keyword\">const<\/span><br \/>\n    TCHAR*<\/code>) <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\ud0c0\uc785\uc744 \ud558\ub098 \ucd94\uac00 \ud558\uc790\uba74 <code>OLECHAR<\/code>\uc744 \ub4e4\uc218 \uc788\uaca0\ub2e4. \uc774 \ud0c0\uc785\uc740 \uc8fc\ub85c \uc790\ub3d9\ud654 \uc778\ud130\ud398\uc774\uc2a4\uc5d0\uc11c \uc0ac\uc6a9\ub41c\ub2e4. \uc774 \ud0c0\uc785\uc740<br \/>\n\ubcf4\ud1b5 <code>wchar_t <\/code>\uc73c\ub85c \uc815\uc758\ub418 \uc788\uc73c\ub098, \uc14b\ud305\uc744 \ubcc0\uacbd\ud558\uac70\ub098 #define \ubb38\uc73c\ub85c <code>OLE2ANSI<\/code><br \/>\n\ub97c \uc815\uc758\ud558\uba74 \ub2e8\uc21c <code><span class=\"cpp-keyword\">char<\/span><\/code> \ud0c0\uc785\uc73c\ub85c \uc804\ud658\ub41c\ub2e4. \ud558\uc9c0\ub9cc \uc0ac\uc2e4\uc0c1<br \/>\n\uc694\uc998\uc5d4 <code>OLE2ANSI<\/code> \ub97c \uc801\uc6a9\ud560 \uc774\uc720\ub294 \uc5c6\ub2e4. (\uc0ac\uc2e4, MFC3 \ubc84\uc83c\uc5d0\uc11c \uc0ac\uc6a9\ub418\uc5b4\uc84c\ub358 \uac83\uc774\ub2e4. \uad6c\uc2dc\ub300\uc758 \uc720\ubb3c^^),<br \/>\n\ub530\ub77c\uc11c \uc9c0\uae08\ubd80\ud130 \uadf8\ub0e5 \ub2e8\uc21c\ud788 <code>OLECHAR<\/code> \ud0c0\uc785\uc744 \uc720\ub2c8\ucf54\ub4dc\ub85c \uac04\uc8fc\ud560 \uac83\uc774\ub2e4.<\/p>\n<p>\uc544\ub798\uc758 \ud45c\ub294 <code>OLECHAR <\/code>\uc640 \uad00\uacc4\ub41c typedef \ubb38\uc73c\ub85c \uc815\uc758\ub41c \ub370\uc774\ud130 \ud0c0\uc785\uc744 \ubcf4\uc5ec\uc900\ub2e4. :<\/p>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<th>\ud0c0\uc785 <\/th>\n<th>\uc758\ubbf8<\/th>\n<\/tr>\n<tr>\n<td><code>OLECHAR<\/code> <\/td>\n<td>\uc720\ub2c8\ucf54\ub4dc \ucf00\ub9ad\ud130 (<code>wchar_t<\/code>) <\/td>\n<\/tr>\n<tr>\n<td><code>LPOLESTR<\/code> <\/td>\n<td>\uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1 (<code>OLECHAR*<\/code>) <\/td>\n<\/tr>\n<tr>\n<td><code>LPCOLESTR<\/code> <\/td>\n<td>const \ud615 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1 (<code><span class=\"cpp-keyword\">const<\/span> OLECHAR*<\/code>)\n    <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\ubb38\uc790\uc5f4\uc744 \ub2e4\ub8f0 \ub54c \uc720\ub2c8\ucf54\ub4dc MBCS \ubc29\uc2dd\uc5d0 \uad00\uacc4\uc5c6\uc774 \uc77c\uad00\ub41c \ud45c\ud604\uc744 \ud560\uc218 \uc788\uac8c \ud574\uc8fc\ub294 \ub450\uac00\uc9c0 \ub9c8\ud06c\ub85c\uac00 \uc788\ub2e4. _T \ub9c8\ud06c\ub85c\ub294 \uc9c0\ub09c \uac15\uc758\uc5d0\uc11c\ub3c4<br \/>\n\ub2e4\ub8e8\uc5c8\ub358 \ubd80\ubd84\uc774\ub2e4. :<\/p>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<th>\ub9c8\ud06c\ub85c <\/th>\n<th>\uc758\ubbf8<\/th>\n<\/tr>\n<tr>\n<td><code>_T(x)<\/code> <\/td>\n<td><code>L<\/code> \uc720\ub2c8\ucf54\ub4dc\ube4c\ub4dc\uc77c\ub54c L\uc744 \uc55e\uc5d0 \uc8fc\uac00\ud574 \uc900\ub2e4. <\/td>\n<\/tr>\n<tr>\n<td><code>OLESTR(x)<\/code> <\/td>\n<td>LPOLESTR \ud0c0\uc785\uc73c\ub85c \ub9cc\ub4e4\uae30 \uc704\ud574 L\uc744 \uc55e\uc5d0 \ucd94\uac00\ud574 \uc900\ub2e4. <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\ub610\ud55c _T\uc5d0\uc11c \ubcc0\ud615\ub41c \ud615\ud0dc\uc758 \ud558\uc9c0\ub9cc \uac19\uc740 \uc5ed\ud65c\uc744 \ud558\ub294 \uba87\uba87 \ub9c8\ud06c\ub85c \ub4e4\uc774 \ub354 \uc788\ub2e4. &#8212; <code>TEXT<\/code>, <code><br \/>\n_TEXT<\/code>, <code>__TEXT<\/code>, and <code>__T<\/code> \uc774 \ub9c8\ud06c\ub85c \ub4e4\uc740 \ubaa8\ub450 \uac19\uc740 \uc77c\uc744 \ud55c\ub2e4.<\/p>\n<h2>COM\uc5d0\uc11c\uc758 \uc2a4\ud2b8\ub9c1 &#8211; BSTR<\/h2>\n<p>\ub9ce\uc740 \uc790\ub3d9\ud654\uac1d\uccb4 \uc778\ud130\ud398\uc774\uc2a4\ub098 COM \uc778\ud130\ud398\uc774\uc2a4\ub294 \uc2a4\ud2b8\ub9c1\uc73c\ub85c BSTR \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \ud558\uc9c0\ub9cc BSTR\ud0c0\uc785\uc740 \ub2e4\ub8e8\uae30 \ub9e4\uc6b0 \uae4c\ub2e4\ub86d\uace0, \uc5d0\ub7ec\ub97c<br \/>\n\uc720\ubc1c\ud558\uae30 \uc27d\ub2e4. \ub530\ub77c\uc11c BSTR\uc744 \uc774\ubc88 \ud30c\ud2b8\uc5d0 \ub2e4\ub904 \ubcf4\ub3c4\ub85d \ud558\uaca0\ub2e4. <\/p>\n<p><code>BSTR<\/code> \ud0c0\uc785\uc740 \ud30c\uc2a4\uce7c \uc2a4\ud0c0\uc77c\uc758 \uc2a4\ud2b8\ub9c1\uacfc C \uc2a4\ud2b8\ub9c1 \uc0ac\uc774\uc758 \uc7a1\uc885 \uc989 \uc11c\ub85c \uc9ec\ubf55\ub418\uc11c \uc0dd\uae34 \ud0c0\uc785\uc774\ub2e4. \ud30c\uc2a4\uce7c\uc5d0\uc11c\ub294<br \/>\n\ubb38\uc790\uc5f4\ud0c0\uc785\uc5d0 \uadf8 \uae38\uc774\uac00 \ub0b4\ubd80\uc801\uc73c\ub85c \uc800\uc7a5\ub41c\ub2e4. \ud558\uc9c0\ub9cc C\uc2a4\ud2b8\ub9c1\uc5d0\uc11c\ub294 \ub9c8\uc9c0\ub9c9 \uc81c\ub85c\ubc14\uc774\ud2b8\ub97c \ud1b5\ud574\uc11c \uadf8 \ubb38\uc790\uc5f4\uc758 \ub05d\uc744 \uc54c\uc218\uc788\uac8c\ub054 \ub418\uc5b4 \uc788\ub2e4. \uc0ac\uc2e4<br \/>\n<code>BSTR<\/code> \ud0c0\uc785\uc740 \ubb38\uc790\uc77c \uae38\uc774\ub97c \ubb38\uc790\uc5f4 \uc2dc\uc791 \ubc14\ub85c \uc804\uc5d0 \uc800\uc7a5\ud558\uace0 \uc774\uc5b4\uc11c \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1\uc744 \uc800\uc7a5\ud558\ub294 \ubc29\uc2dd\uc758 \ud0c0\uc785\ub2c8\ub2e4. \ub610\ud55c<br \/>\n\uc81c\ub85c\ubc14\uc774\ud2b8\ub85c \uadf8 \ub05d\uc744 \ud45c\uc2dc\ud55c\ub2e4. \uc544\ub798\ub294 &#8220;Bob&#8221; \uc774\ub77c\ub294 BSTR \ud0c0\uc785\uc758 \uc2a4\ud2b8\ub9c1\uc758 \uba54\ubaa8\ub9ac \uad6c\uc870\ub97c \ubcf4\uc5ec\uc900\ub2e4.:<\/p>\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n<tbody>\n<tr>\n<td><code><span class=\"cpp-literal\">06<\/span> <span class=\"cpp-literal\">00<\/span> <span class=\"cpp-literal\">00<\/span> <span class=\"cpp-literal\">00<\/span><\/code>\n    <\/td>\n<td><code> <span class=\"cpp-literal\">42<\/span> <span class=\"cpp-literal\">00<\/span><\/code>\n    <\/td>\n<td><code> 6F <span class=\"cpp-literal\">00<\/span><\/code> <\/td>\n<td><code> <span class=\"cpp-literal\">62<\/span> <span class=\"cpp-literal\">00<\/span><\/code>\n    <\/td>\n<td><code> <span class=\"cpp-literal\">00<\/span> <span class=\"cpp-literal\">00<\/span><\/code>\n    <\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\"><code>\uae38\uc774<\/code> <\/p>\n<\/td>\n<td>\n<p align=\"center\"><code>B<\/code> <\/p>\n<\/td>\n<td>\n<p align=\"center\"><code>o<\/code> <\/p>\n<\/td>\n<td>\n<p align=\"center\"><code>b<\/code> <\/p>\n<\/td>\n<td>\n<p align=\"center\"><code>\uc2a4\ud2b8\ub9c1\ub05d<\/code> <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\ub208\uce58\ucc44\uc168\ub2e4 \uc2dc\ud53c \ubb38\uc790\uc5f4\uc758 \uae38\uc774\uac00 DWORD\ud0c0\uc785\uc73c\ub85c (\uc989 4\ubc14\uc774\ud2b8) \uc2e4\uc81c \ubb38\uc790 \uc55e\uc5d0 \uc800\uc7a5\ub41c\ub2e4. \ud558\uc9c0\ub9cc \uc774\ub294 \ub9c8\uc9c0\ub9c9 00 00\uc758 \uc81c\ub85c\ubc14\uc774\ud2b8\ub97c<br \/>\n\ud3ec\ud568\ud558\uc9c0 \uc54a\uc740 \uae38\uc774 \uc774\ub2e4. \uc704\uc758 \uacbd\uc6b0 &#8220;Bob&#8221; \ubb38\uc790\uc5f4\uc740 \ucd1d 6\ubc14\uc774\ud2b8\uc758 3\uac1c\uc758 \uc720\ub2c8\ucf54\ub4dc \uce90\ub9ad\ud130\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \uae38\uc774 \uc815\ubcf4\ub97c \ud3ec\ud568\ud558\ub294 \uc774\uc720\ub294<br \/>\nCOM \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ub2e4\ub978 \uacf3\uc73c\ub85c \ub9c8\uc0ec\ub9c1 \ub420\ub54c \uc5bc\ub9c8\ub098 \ub9ce\uc740 \ubc14\uc774\ud2b8\ub97c \ubcf4\ub0b4\uc57c \ud558\ub294\uc9c0 \uadf8 \uc815\ubcf4\uac00 \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. (\uc0ac\uc2e4, <code>BSTR<\/code><br \/>\n\uc740 \ub2e8\uc9c0 \uc2a4\ud2b8\ub9c1\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc784\uc758\uc758 \uc5b4\ub5a4 \ub370\uc774\ud0c0\uac00 \ub4e4\uc5b4 \uc788\uc5b4\ub3c4 \uc0c1\uad00\uc774 \uc5c6\ub2e4.)<\/p>\n<p><code>BSTR<\/code> \ubcc0\uc218\ub294 C++\uc5d0\uc11c \uccab\ubc88\uc9f8 \uce90\ub9ad\ud130\ub97c \uac00\ub9ac\ud0a4\ub294 \ud3ec\uc778\ud130 \ubcc0\uc218 \uc774\ub2e4. <code>BSTR<\/code> \ud0c0\uc785\uc740<br \/>\n\uc774\ub807\uac8c \uc815\uc758 \ub418\uc788\ub2e4. :<\/p>\n<pre>  <span class=\"cpp-keyword\">typedef<\/span> OLECHAR* BSTR;<\/pre>\n<p>\ubd88\ud589\ud788\ub3c4 \uc774\ub7f0\ubc29\uc2dd\uc758 \uc815\uc758\ub294 \ub9ce\uc740 \ubb38\uc81c\ub97c \uc720\ubc1c\ud560\uc218 \uc788\ub2e4. \uc704\uc5d0\uc11c\ub3c4 \uc124\uba85\ud588\ub4ef\uc774 \uc2e4\uc81c\ub85c\ub294 BSTR\uc740 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1\uacfc\ub294 \ub2e4\ub978 \ud2b9\uc131\uc744 \uac00\uc9c4<br \/>\n\ud0c0\uc785\uc774\ub2e4. \ub530\ub77c\uc11c BSTR\uacfc LPOLESTR\uc740 \ub9c8\uc74c\ub300\ub85c \uc11e\uc5b4 \uc368\ub3c4 \ucef4\ud30c\uc77c\ub7ec\ub294 \uc5d0\ub7ec\ub97c \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub294\ub2e4. LPOLESTR\uc744 \uc778\uc790\ub85c \ubc1b\ub294 \ud568\uc218\uc5d0<br \/>\nBSTR \ud0c0\uc785\uc744 \uc804\ub2ec\ud558\ub294 \uac83\uc740 \uc548\uc804\ud558\ub2e4. \uadf8\ub807\uc9c0\ub9cc \uadf8 \ubc18\ub300\uc758 \uacbd\uc6b0\ub294 \ub2e4\ub974\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\uac00 \ubc1b\ub294 \uc778\uc790\uc758 \ud0c0\uc785\uc744 \uc815\ud655\ud788 \uc54c\uace0 \uc815\ud655\ud788 \uc804\ub2ec\ud558\ub294 \uac83\uc774<br \/>\n\uc911\uc694\ud558\ub2e4. <\/p>\n<p>BSTR \ud0c0\uc785\uc744 \ubc1b\ub294 \ud568\uc218\uc5d0 LPOLESTR\uc744 \uc804\ub2ec\ud558\ub294\uac83\uc774 \uc65c \uc548\uc804\ud558\uc9c0 \ubabb\ud558\ub0d0 \ud558\uba74, BSTR\uc774 \uac00\ub9ac\ud0a4\ub294 \uba54\ubaa8\ub9ac \ubc14\ub85c \uc55e 4\ubc14\uc774\ud2b8\ub294 \uadf8<br \/>\n\ubb38\uc790\uc5f4\uc758 \uae38\uc774\ub97c \ud3ec\ud568\ud558\ub294 \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\uc5b4\uc5ec \ud55c\ub2e4. \uc544\ub9c8 BSTR\uc744 \ubc1b\ub294 \ud568\uc218\uc5d0\uc11c\ub294 \uadf8 \uc815\ubcf4\uac00 \ud3ec\ud568\ub418 \uc788\ub2e4\ub294 \uac00\uc815\ud558\uc5d0 \uadf8 \uc815\ubcf4\ub97c \uc774\uc6a9\ud560 \uac83\uc774\ub2e4.<br \/>\n\ud558\uc9c0\ub9cc LPOLESTR \ud0c0\uc785\uc5d0\ub294 \uadf8\ub7ec\ud55c \uc815\ubcf4\ub294 \uc5c6\ub2e4. \uc774\ub294 \uc548\uc804\ud558\uc9c0 \ubabb\ud55c \uacb0\uacfc\ub97c \ub0b3\uc744 \uac83\uc774\ub2e4. \uc704\uc5d0\uc11c \ub9d0\ud588\ub2e4 \uc2dc\ud53c COM\uac1d\uccb4\uc5d0\uc11c\ub294 BSTR \uc758<br \/>\n\ubb38\uc790\uc5f4 \uc55e\uc5d0 \uc874\uc7ac\ud558\ub294 \ubb38\uc790\uc5f4\uae38\uc774 \uc815\ubcf4\ub97c \uc774\uc6a9\ud574 \uadf8 \ub9cc\ud07c\uc758 \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud55c\ub2e4\uace0 \uc788\ub2e4. BSTR\ub300\uc2e0 LPOLESTR\uc744 \uc804\ub2ec\ud558\uba74 \uc5bc\ub9c8\ub9cc\ud07c\uc758 \ubc14\uc774\ud2b8\uac00<br \/>\n\uc804\uc1a1\ub420\uc9c0\ub294 \uc544\ubb34\ub3c4 \uc7a5\ub2f4\ud560 \uc218\uac00 \uc5c6\uac8c \ub418\ub294 \uac83\uc774\ub2e4.<\/p>\n<p>\ub530\ub77c\uc11c BSTR\uc744 \ub2e4\ub8e8\uae30 \uc704\ud55c \uba87\uba87 API\ub4e4\uc774 \uc874\uc7ac\ud558\uc9c0\ub9cc \uadf8\uc911 \uac00\uc7a5 \uc911\uc694\ud55c \uac83\uc740 \ub450\uac00\uc9c0 \uc774\ub2e4. \ud558\ub098\ub294 BSTR\uc744 \uc0dd\uc131\uc2dc\ud0a4\uae30 \uc704\ud55c \uac83\uc774\uace0,<br \/>\n\ub2e4\ub978\ud558\ub098\ub294 \uc81c\uac70\ud558\uae30 \uc704\ud55c \uac83\uc774\ub2e4. BSTR\uc744 \uc0dd\uc131\ud558\ub294 \ud568\uc218\ub294 <code>SysAllocString()<\/code> \uc774\uace0 \uc81c\uac70\ud558\ub294\uac83\uc740 <code><br \/>\nSysFreeString()<\/code>\uc774\ub2e4.&nbsp; <code>SysAllocString()<\/code> \uc740 \ub9e4\uac1c\ubcc0\uc218\ub85c \ubc1b\uc740 \uc720\ub2c8\ucf54\ub4dc<br \/>\n\uc2a4\ud2b8\ub9c1\uc744 BSTR\ud615\ud0dc\ub85c \ub9cc\ub4e4\uc5b4 \uc8fc\ub294 \uc5ed\ud560\uc740 \ud55c\ub2e4. (\uc0c8\ub85c\uc6b4 \uba54\ubaa8\ub9ac\ub97c \ud560\ub2f9\ud55c \ud6c4\uc5d0 \uc544\ub9c8 \ubb38\uc790\uc5f4 \uae38\uc774\ub97c \uacc4\uc0b0\ud574\uc11c \ubb38\uc790\uc5f4 \uc55e\uc5d0 \uadf8 \uae38\uc774\uc815\ubcf4\ub97c \ucd94\uac00\ud574<br \/>\n\uc8fc\ub294 \uc815\ub3c4\uc758 \uc77c\uc744 \ud560 \uac83\uc774\ub2e4.) \ubc18\uba74 <code>SysFreeString()<\/code> \uc740 <code>BSTR<\/code> \uc744 \uba54\ubaa8\ub9ac\uc5d0\uc11c<br \/>\n\uc81c\uac70\ud558\ub294 \uc5ed\ud560\uc744 \ud55c\ub2e4. <\/p>\n<pre>BSTR bstr = NULL;<br \/> <br \/>  bstr = SysAllocString ( L<span class=\"cpp-string\">\"Hi Bob!\"<\/span> );<br \/> <br \/>  <span class=\"cpp-keyword\">if<\/span> ( NULL == bstr )<br \/>    <span class=\"cpp-comment\">\/\/ \uba54\ubaa8\ub9ac\uac00 \ubd80\uc871<\/span><br \/> <br \/>  <span class=\"cpp-comment\">\/\/ bstr\uc744 \ub9c8\uc74c\uaecf \uc0ac\uc6a9^^<\/span><br \/> <br \/><br \/>  SysFreeString ( bstr );<\/pre>\n<p>\uc0ac\uc2e4, \uc2a4\ud2b8\ub9c1 \ud558\ub098 \uc0ac\uc6a9\ud558\uaca0\ub2e4\uace0 \uc774\ub7f0 \uc77c\ub828\uc758 \ud568\uc218\ub97c \uacc4\uc18d\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uac83\uc740 \uad49\uc7a5\ud788 \ud53c\uace4\ud558\ub2e4. \ub530\ub77c\uc11c \uc790\uc5f0\uc2a4\ub7fd\uac8c \uba54\ubaa8\ub9ac \ud560\ub2f9, \uc81c\uac70\ub97c<br \/>\n\uc790\ub3d9\uc801\uc73c\ub85c \ud574\uc8fc\ub294 \uba87\uba87 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4\uc774 \uc0dd\uaca8\ub098\uac8c \ub410\ub2e4. \uadf8\uc5d0 \ub300\ud574\uc11c \ub4a4\uc5d0 \uc0b4\ud3b4\ubcf4\uae30\ub85c \ud558\uc790.<\/p>\n<p><\/p>\n<p><\/p>\n<p><\/p>\n<p><\/p>\n<h2>\uc2a4\ud2b8\ub9c1 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4<\/h2>\n<p>\uc9c0\uae08\uae4c\uc9c0 \uc5ec\ub7ec\uac00\uc9c0\uc758 \uc2a4\ud2b8\ub9c1 \ud0c0\uc785\uc5d0 \ub300\ud574 \uc124\uba85\ud588\uace0, \uc774\uc81c \uc2a4\ud2b8\ub9c1 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4\uc5d0 \ub300\ud574 \uc124\uba85\ud558\uaca0\ub2e4. \uac01\uac01 \uc5b4\ub5bb\uac8c \uc0dd\uc131\uc744 \ud558\uace0 \uc5b4\ub5bb\uac8c C\uc2a4\ud0c0\uc77c<br \/>\n\uc2a4\ud2b8\ub9c1\uc73c\ub85c \ubcc0\ud658\uc2dc\ud0ac\uc218 \uc788\ub294\uc9c0 \uc124\uba85\ud558\uaca0\ub2e4. \uc65c\ub0d0\ud558\uba74 C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1 \ud3ec\uc778\ud130\ub294 API\ud568\uc218\ub97c \ud638\ucd9c\ud558\uac70\ub098 \ub2e4\ub978 \ub7a9\ud37c\ud074\ub798\uc2a4\ub4e4\uc744 \uc0dd\uc131\ud558\ub294\ub370 \ud544\uc694\ud558\uae30<br \/>\n\ub54c\ubb38\uc774\ub2e4. \ub098\ub294 \uadf8\uc678\uc758 \ud568\uc218\ub4e4 \uc608\ub97c \ub4e4\uc790\uba74 \uc815\ub82c, \ube44\uad50 \ub4f1\uc758 \uae30\ub2a5\ub4e4\uc5d0 \ub300\ud574\uc11c\ub294 \uc0dd\ub7b5\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4. <\/p>\n<p>\ub2e4\uc2dc\ud55c\ubc88 \uac15\uc870\ud558\uc9c0\ub9cc, \ud655\uc2e4\ud558\uc9c0 \uc54a\ub2e4\uba74 <b>\uc808\ub300\ub85c<\/b> \uac15\uc81c \ud615\ubcc0\ud658\uc744 \ud558\uc9c0 \uc54a\ub3c4\ub85d \ud558\uc790.<\/p>\n<h3>CRT\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ud074\ub798\uc2a4\ub4e4<\/h3>\n<h4>_bstr_t<\/h4>\n<p><code>_bstr_t<\/code><br \/>\n\ud074\ub798\uc2a4\ub294 \uc544\uc8fc \uc798 \ub9cc\ub4e4\uc9c4 <code>BSTR<\/code> \ub7a9\ud37c<br \/>\n\ud074\ub798\uc2a4\ub2e4. \uadf8\ub9ac\uace0 <code>BSTR<\/code>\uc758<br \/>\n\ub0b4\ubd80\uad6c\ud604\uc774\ub098 \uae30\ud0c0 \ub4f1\ub4f1\uc758 \ubb38\uc81c\ub97c \ub7a9\ud551<br \/>\n\ud588\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 \uc5ec\ub7ec\uac00\uc9c0<br \/>\n\uc5f0\uc0b0\uc790\ub97c \uc7ac\uc815\uc758 \ud588\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c, \uc0ac\uc6a9\uc790\uc758 \ud3b8\uc758\ub97c \uc704\ud574 \ub2e4\uc591\ud55c \uc0dd\uc131\uc790\ub97c<br \/>\n\uc81c\uacf5\ud55c\ub2e4. \ud558\uc9c0\ub9cc BSTR\uc790\uccb4\uc5d0<br \/>\n\uc811\uadfc\ud558\ub294 \uc5f0\uc0b0\uc790\ub4e4\uc740 \uc5c6\ub2e4\ub294 \uac78 \uc8fc\uc758\ud574\ub77c. \ub530\ub77c\uc11c [out]<br \/>\n\ud30c\ub77c\ubbf8\ud130\ub97c \uac16\ub294 COM \uba54\uc11c\ub4dc\uc5d0<br \/>\n\uc9c1\uc811\uc801\uc73c\ub85c \uc804\ub2ec\ud560\uc218\ub294<br \/>\n\uc5c6\ub2e4. \ub9cc\uc57d COM\uba54\uc11c\ub4dc\uc5d0<br \/>\n\uc9c1\uc811\uc801\uc73c\ub85c \uc804\ub2ec\ud560\uc218<br \/>\n\uc788\ub294 BSTR*<br \/>\n\ud0c0\uc785\uc774 \ud544\uc694\ud558\uba74 ATL<br \/>\n\ud074\ub798\uc2a4\uc778 CComBSTR<br \/>\n\uc774 \ub354 \uc88b\uc740 \uc120\ud0dd\uc77c \uac83\uc774\ub2e4. <\/p>\n<p>\ud558\uc9c0\ub9cc \ubb3c\ub860 <code><br \/>\n_bstr_t<\/code><br \/>\n\ub3c4 BSTR\uc744<br \/>\n\ubc1b\ub294 \ud568\uc218\uc5d0 \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4. \uc774\ub294 \ub2e4\uc74c\uc758 \uc138\uac00\uc9c0 \uc774\uc720 \ub54c\ubb38\uc774\ub2e4. \uccab\uc9f8 <code><br \/>\n_bstr_t<\/code><br \/>\n\uc740 <code>wchar_t*<\/code> \uc73c\ub85c\uc758 \ud615\ubcc0\ud658<br \/>\n\uc5f0\uc0b0\uc790\ub97c \uc81c\uacf5\ud55c\ub2e4. \ub458\uc9f8, <code>wchar_t*<\/code><br \/>\n\uacfc <code>BSTR<\/code><br \/>\n\ub294 \ucef4\ud30c\uc77c<br \/>\n\uacfc\uc815\uc5d0\uc11c\ub294 \uac19\uc740 \ud0c0\uc785\uc73c\ub85c \uc778\uc2dd\ub41c\ub2e4. \uc65c\ub0d0\ud558\uba74 BSTR\uc740 wchar_t*\ud615\uc73c\ub85c \uc815\uc758\ub418<br \/>\n\uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \ub9c8\uc9c0\ub9c9 \uc138\ubc88\uc9f8\ub294 <code>_bstr_t<\/code><br \/>\n\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c \ubb38\uc790\uc5f4\uc758 \uc2dc\uc791\ubd80\ubd84\uc744 \ud3ec\uc778\ud130\ub85c \uac00\ub9ac\ud0a4\uace0 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \ub530\ub77c\uc11c \uba85\uc2dc\uc801\uc73c\ub85c \ud615\ubcc0\ud658<br \/>\n\uc5f0\uc0b0\uc790\uac00 \uc5c6\uc5b4\ub3c4 \uc798 \uc791\ub3d9\ub418\uace4 \ud55c\ub2e4. <\/p>\n<pre><span class=\"cpp-comment\">\/\/ \uc0dd\uc131<\/span><br \/>_bstr_t bs1 = <span class=\"cpp-string\">\"char string\";       \/\/ LPCSTR\ub85c \ubd80\ud130 \uc0dd\uc131<br \/>_bstr_t bs2 = L\"wide char string\"; \/\/ LPCWSTR\ub85c \ubd80\ud130 \uc0dd\uc131<br \/>_bstr_t bs3 = bs1;                 \/\/ \ub2e4\ub978 _bstr_t\ub85c \ubd80\ud130 \uc0dd\uc131<br \/>_variant_t v = \"Bob\"<\/span>;<br \/>_bstr_t bs4 = v;                   <span class=\"cpp-comment\">\/\/ \uc2a4\ud2b8\ub9c1\uc744 \ud3ec\ud568\ud558\ub294 _variant_t<\/span><span class=\"cpp-string\">\ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/> <br \/><span class=\"cpp-comment\">\/\/ Extracting data<\/span><br \/>LPCSTR psz1 = bs1;              <span class=\"cpp-comment\">\/\/ \uc790\ub3d9\uc73c\ub85c MBCS\ub85c \ud615\ubcc0\ud658<\/span><br \/>LPCSTR psz2 = (LPCSTR) bs1;     <span class=\"cpp-comment\">\/\/ \uc704\uc758 \uacbd\uc6b0\uc640 \uac19\ub2e4.<\/span><br \/>LPCWSTR pwsz1 = bs1;            <span class=\"cpp-comment\">\/\/ \ub0b4\ubd80\uc801\uc73c\ub85c \ud3ec\ud568\ud558\ub294 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1 \ub9ac\ud134<\/span><br \/>LPCWSTR pwsz2 = (LPCWSTR) bs1;  <span class=\"cpp-comment\">\/\/ \uc704\uc758 \uacbd\uc6b0\uc640 \uac19\ub2e4.<\/span><br \/>BSTR    bstr = bs1.copy();      <span class=\"cpp-comment\">\/\/ \ubcf5\uc0ac<\/span><br \/> <br \/>  <span class=\"cpp-comment\">\/\/ ...<\/span><br \/>  SysFreeString ( bstr ); \/\/\uba54\ubaa8\ub9ac\uc5d0\uc11c \ud574\uc81c\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4.<\/pre>\n<p> <code>_bstr_t<\/code> \uc740 \ub610\ud55c <code><br \/>\n<span class=\"cpp-keyword\">char<\/span>*<\/code> \uc640 <code>wchar_t* <\/code>\uc5d0 \ub300\ud55c \ud615\ubcc0\ud658<br \/>\n\uc5f0\uc0b0\uc790\ub3c4 \uac00\uc9c0\uace0 \uc788\ub2e4. \ud558\uc9c0\ub9cc \uc774\ub294 \uc758\ubb38\uc2a4\ub7ec\uc6b4 \uad6c\ud604\uc774\ub2e4. \uc774 \uc5f0\uc0b0\uc790\ub4e4\uc5d0 \uc758\ud574 \ub9ac\ud134\ub418\ub294 \ud3ec\uc778\ud130\ub294 const \ud0c0\uc785\uc774 \uc544\ub2c8\uc5ec\uc11c \uc218\uc815\ub420\uc218\ub3c4 \uc788\uc9c0\ub9cc,<br \/>\n\ub9cc\uc57d \uc218\uc815\ub41c\ub2e4\uba74 \ub0b4\ubd80\uc801\uc778 BSTR \ud0c0\uc785\uc774 \uae68\uc9c8\uac83\uc774\uace0, \ub9ce\uc740 \ubb38\uc81c\ub97c \uc720\ubc1c\ud560 \uac83\uc774\ub2e4.<\/p>\n<h3>STL \ud074\ub798\uc2a4\ub4e4<\/h3>\n<p>STL\uc740 <code>basic_string <\/code>\ud558\ub098\uc758 \uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\uac00 \uc788\ub2e4. <code><br \/>\nbasic_string<\/code> \uc740 0\uc73c\ub85c \ub05d\ub098\ub294 \ubb38\uc790\ubc30\uc5f4 \uc2a4\ud2b8\ub9c1\uc744 \uad00\ub9ac\ud55c\ub2e4. \uc5b4\ub5a4 \uce90\ub9ad\ud130 \ud0c0\uc785\uc774 \uc4f0\uc77c\uc9c0\uc5d0 \ub300\ud55c\uac83\uc740 \ud15c\ud50c\ub9bf \ub9e4\uac1c\ubcc0\uc218\ub85c \uc804\ub2ec\uc774<br \/>\n\ub41c\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uc774 \ud074\ub798\uc2a4\uc5d0\uc11c \uc5bb\uc740 \ud3ec\uc778\ud130\ub97c \uc9c1\uc811\uc801\uc73c\ub85c \uc870\uc791\ud558\ub294 \uc77c\uc740 \ud53c\ud574\uc57c \ud55c\ub2e4. \ub300\uc2e0 \uc774 \ud074\ub798\uc2a4\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ud568\uc218\ub098 \uc5f0\uc0b0\uc790\ub4e4\uc744 \uc368\uc11c<br \/>\n\uc870\uc791\ud558\uae30\ub97c \uad8c\uc7a5\ud55c\ub2e4. <\/p>\n<p>\uc774 \ud074\ub798\uc2a4\uc5d0\uc11c \ubbf8\ub9ac\uc815\ud574\uc9c4 \ub450\uac00\uc9c0\uc758 \ud615\ud0dc\uc758 \ud0c0\uc785\uc774 \uc874\uc7ac\ud55c\ub2e4. \ud558\ub098\ub294 <code><span class=\"cpp-keyword\">char<\/span> <\/code><br \/>\n\ub97c \uc870\uc791\ud558\ub294<code><br \/>\nstring<\/code>\uc774\uace0 \ub2e4\ub978 \ud558\ub098\ub294 <code>wchar_t<\/code>\ub97c \uc870\uc791\ud558\ub294 <code>wstring<\/code> \uc774\ub2e4. \uc0ac\uc2e4,<br \/>\nTCHAR \ud615\uc758 \uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\ub294 \uc815\uc758\ub418 \uc788\uc9c0 \uc54a\uc9c0\ub9cc \uc544\ub798\uc758 \ucf54\ub4dc\ub97c \ud1b5\ud574 TCHAR\ud0c0\uc785\ub3c4 \uc0ac\uc6a9\ud560 \uc218\uac00 \uc788\ub2e4.<\/p>\n<pre><span class=\"cpp-comment\">\/\/ \ud0c0\uc785 \uc815\uc758<\/span><br \/><span class=\"cpp-keyword\">typedef<\/span> basic_string&lt;TCHAR&gt; tstring; <span class=\"cpp-comment\">\/\/ TCHAR\ud615 \uc2a4\ud2b8\ub9c1<\/span><br \/> <br \/><span class=\"cpp-comment\">\/\/ \uc0dd\uc131\uc790\ub4e4<\/span><br \/>string str = <span class=\"cpp-string\">\"char string\";         \/\/ LPCSTR\ub85c \ubd80\ud130 \uc0dd\uc131<br \/>wstring wstr = L\"wide char string\"; \/\/ LPCWSTR\ub85c \ubd80\ud130 \uc0dd\uc131<br \/>tstring tstr = _T(\"TCHAR string\"<\/span>);  <span class=\"cpp-comment\">\/\/ LPCTSTR<\/span><span class=\"cpp-string\">\ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/> <br \/><span class=\"cpp-comment\">\/\/ Extracting data<\/span><br \/>LPCSTR psz = str.c_str();    <span class=\"cpp-comment\">\/\/ \uc77d\uae30 \uc804\uc6a9 \uc989 const\ud615 \ubc84\ud37c \ub9ac\ud134<\/span><br \/>LPCWSTR pwsz = wstr.c_str(); <span class=\"cpp-comment\">\/\/ \uc77d\uae30 \uc804\uc6a9 \uc989 const\ud615 \ubc84\ud37c \ub9ac\ud134 LPCWSTR\ud615<\/span><br \/>LPCTSTR ptsz = tstr.c_str(); <span class=\"cpp-comment\">\/\/ \uc77d\uae30 \uc804\uc6a9 \uc989 const\ud615 \ubc84\ud37c \ub9ac\ud134 LPCTSTR\ud615<\/span><\/pre>\n<p> <code>_bstr_t<\/code>\ud615\uacfc\ub294 \ub2e4\ub974\uac8c <code>basic_string<\/code> \ud074\ub798\uc2a4\ub294 \ub2e4\ub978 \uce90\ub9ad\ud130 \ud0c0\uc785\ub4e4\ub07c\ub9ac<br \/>\n\uc9c1\uc811\uc801\uc73c\ub85c \ud615\ubcc0\ud658\uc744 \ud560\uc218 \uc5c6\ub2e4. \uadf8\ub7ec\ub098<br \/>\n<code>c_str()<\/code> \ud568\uc218\uc5d0\uc11c \uc804\ub2ec\ub418\ub294 \ud3ec\uc778\ud130\ub97c \uc774\uc6a9\ud574\uc11c \ub2e4\ub978 \ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4. \ud558\uc9c0\ub9cc \uadf8 \ub2e4\ub978 \ud074\ub798\uc2a4\uc5d0\ub294 \uadf8 \ud3ec\uc778\ud130\ub97c<br \/>\n\ubc1b\ub294 \uc0dd\uc131\uc790\uac00 \uc874\uc7ac\ud574\uc57c\ub9cc \ud560 \uac83\uc774\ub2e4. \uc608\ub97c \ub4e4\uba74 : <\/p>\n<pre><span class=\"cpp-comment\">\/\/ \uc608\uc81c basic_string\ud0c0\uc785\uc744 \uc774\uc6a9\ud574\uc11c _bstr_t \ud615 \uac1d\uccb4 \uc0dd\uc131<\/span><br \/>_bstr_t bs1 = str.c_str();  <span class=\"cpp-comment\">\/\/ LPCSTR \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/>_bstr_t bs2 = wstr.c_str(); <span class=\"cpp-comment\">\/\/ LPCWSTR \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><\/pre>\n<h3>ATL \ud074\ub798\uc2a4\ub4e4<\/h3>\n<h4>CComBSTR<\/h4>\n<p><code>CComBSTR<\/code> \uc740 ATL\uc758 BSTR\ub7a9\ud37c \ud074\ub798\uc2a4\ub2e4. \uba87\uba87 \uacf3\uc5d0\uc11c <code>_bstr_t<\/code> \ubcf4\ub2e4 \ub354<br \/>\n\uc720\uc6a9\ud558\uac8c \uc4f0\uc778\ub2e4. \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc740 <code>CComBSTR<\/code> \uc740 \ub0b4\ubd80\uc5d0 \uc874\uc7ac\ud558\ub294 <code>BSTR<\/code> \uc744 \uc9c1\uc811\uc801\uc73c\ub85c<br \/>\n\uc811\uadfc\ud560\uc218 \uc788\ub2e4\ub294 \ub370 \uc788\ub2e4. \uc774 \uc598\uae30\ub294 \uc989, COM \uba54\uc11c\ub4dc\uc5d0 \uc9c1\uc811\uc801\uc73c\ub85c<br \/>\n<code>CComBSTR<\/code> \uac1d\uccb4\ub97c \uc804\ub2ec\ud560\uc218 \uc788\ub2e4\ub294 \uc598\uae30\uac00 \ub41c\ub2e4. \uadf8\ub7fc <code>CComBSTR<\/code> \uac1d\uccb4\ub294 \uc790\ub3d9\uc73c\ub85c <code>BSTR<\/code><br \/>\n\uc5d0 \uad00\ub828\ub41c \uba54\ubaa8\ub9ac\ub97c \uad00\ub9ac\ud574 \uc904\uac83\uc774\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc544\ub798\uc758 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud55c\ub2e4\uace0 \uac00\uc815\ud574\ubcf4\uc790. :<\/p>\n<pre><span class=\"cpp-comment\">\/\/ \uac04\ub2e8\ud55c \uc778\ud130\ud398\uc774\uc2a4<\/span><br \/><span class=\"cpp-keyword\">struct<\/span> IStuff : <span class=\"cpp-keyword\">public<\/span> IUnknown<br \/>{<br \/>  <span class=\"cpp-comment\">\/\/ \uc0dd\ub7b5....<br \/><\/span><br \/>  STDMETHOD(SetText)(BSTR bsText);<br \/>  STDMETHOD(GetText)(BSTR* pbsText);<br \/>};<\/pre>\n<p><code>CComBSTR<\/code> \uc740 <code>BSTR<\/code> \ud615\ubcc0\ud658 \uc5f0\uc0b0\uc790\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \ub530\ub77c\uc11c \uac1d\uccb4\ub97c \uc9c1\uc811\uc801\uc73c\ub85c <code>SetText()<\/code><br \/>\n\uba54\uc11c\ub4dc\uc5d0 \uc804\ub2ec\ud560 \uc218\uac00 \uc788\ub2e4. \ub610\ud55c <code>&amp;<\/code> \uc5f0\uc0b0\uc790\ub97c \uc81c\uc815\uc758 \ud574\uc11c <code>BSTR*<\/code> \ud0c0\uc785\uc744 \ub9ac\ud134\ud55c\ub2e4.<br \/>\n\uadf8\ub798\uc11c \uc5ec\ub7ec\ubd84\uc740 <code>BSTR*<\/code> \ud0c0\uc785\uc744 \ubc1b\ub294 \uba54\uc11c\ub4dc\uc5d0 \ubd80\uac00\uc801\uc778 \ud615\ubcc0\ud658\uc774 \uc5c6\uc774\ub3c4 \uc9c1\uc811\uc801\uc73c\ub85c \uc804\ub2ec \ud560\uc218 \uc788\uac8c \ub41c\ub2e4. <\/p>\n<pre>CComBSTR bs1;<br \/>CComBSTR bs2 = <span class=\"cpp-string\">\"new text\"<\/span>;<br \/> <br \/>  pStuff-&gt;GetText ( &amp;bs1 );       <span class=\"cpp-comment\">\/\/ \ub0b4\ubd80 BSTR \uc758 \ud3ec\uc778\ud130 \uc804\ub2ec<\/span><br \/>  pStuff-&gt;SetText ( bs2 );        <span class=\"cpp-comment\">\/\/ BSTR \ub85c \uc554\uc2dc\uc801 \ud615\ubcc0\ud658<\/span><br \/>  pStuff-&gt;SetText ( (BSTR) bs2 ); <span class=\"cpp-comment\">\/\/ \uba85\uc2dc\uc801 \ud615\ubcc0\ud658 \uc704\uc758 \uacbd\uc6b0\uc640 \uc815\ud655\ud788 \uac19\ub2e4.<\/span><\/pre>\n<p><code>CComBSTR<\/code> \uc740 <code>_bstr_t<\/code> \ud0c0\uc785\uacfc \uac70\uc758 \uc720\uc0ac\ud55c \uc0dd\uc131\uc790 \uad6c\uc870\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \ud558\uc9c0\ub9cc<br \/>\n\uc911\uc694\ud55c \uc810\uc740 MBCS \uc2a4\ud2b8\ub9c1\uc744 \uc790\ub3d9\uc801\uc73c\ub85c \ubcc0\ud658\ud574 \uc8fc\ub294 \uc0dd\uc131\uc790\ub294 \uc5c6\ub2e4\ub294 \uac83\uc774\ub2e4. \ub530\ub77c\uc11c MBCS \uc2a4\ud2b8\ub9c1\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0\uc5d0\ub294 \uc5ec\ub7ec\uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c<br \/>\nBSTR\ud615\uc73c\ub85c \ubcc0\ud658\ud574 \uc8fc\uc5b4\uc57c\ub9cc \ud55c\ub2e4. \uadf8 \uc911\uc5d0\uc11c ATL \ubcc0\ud658 \ub9c8\ud06c\ub85c \ub4e4\uc744 \ucd94\ucc9c\ud55c\ub2e4.<\/p>\n<pre><span class=\"cpp-comment\">\/\/ \uc0dd\uc131<\/span><br \/>CComBSTR bs1 = <span class=\"cpp-string\">\"char string\";       \/\/ LPCSTR<\/span><span class=\"cpp-comment\"> \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><span class=\"cpp-string\"><br \/>CComBSTR bs2 = L\"wide char string\"<\/span>; <span class=\"cpp-comment\">\/\/ LPCWSTR \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/>CComBSTR bs3 = bs1;                 <span class=\"cpp-comment\">\/\/ CComBSTR  \ub85c \ubd80\ud130 \ubcf5\uc81c\uc0dd\uc131<\/span><br \/>CComBSTR bs4;<br \/> <br \/>  bs4.LoadString ( IDS_SOME_STR );  <span class=\"cpp-comment\">\/\/ \uc2a4\ud2b8\ub9c1 \ud14c\uc774\ube14 \ub9ac\uc18c\uc2a4\ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/> <br \/><span class=\"cpp-comment\">\/\/ \uac12 \uc5bb\uc5b4\uc624\uae30<\/span><br \/>BSTR bstr1 = bs1;        <span class=\"cpp-comment\">\/\/ \ub0b4\ubd80\uc758 BSTR\uc744 \ub9ac\ud134 \ud558\uc9c0\ub9cc \uc870\uc791\ud558\uc9c0\ub294 \ub9d0\uac83!!<\/span><br \/>BSTR bstr2 = (BSTR) bs1; <span class=\"cpp-comment\">\/\/ \ud615\ubcc0\ud658\ub3c4 OK<\/span><br \/>BSTR bstr3 = bs1.Copy(); <span class=\"cpp-comment\">\/\/ \uac19\uc740 \ub0b4\uc6a9\uc758 BSTR\uc744 \uc0dd\uc131\ud6c4 \ub9ac\ud134<\/span><br \/>BSTR bstr4;<br \/> <br \/>  bstr4 = bs1.Detach();  <span class=\"cpp-comment\">\/\/ bs1 \ub0b4\ubd80\uc758 BSTR\uc744 \ub354\uc774\uc0c1 \uad00\ub9ac\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/span><br \/> <br \/>  <span class=\"cpp-comment\">\/\/ ...<\/span><br \/>  SysFreeString ( bstr3 );<br \/>  SysFreeString ( bstr4 );<\/pre>\n<p>\uc704\uc758 \uc608\uc81c\uc5d0\uc11c <code>Detach()<\/code> \uba54\uc11c\ub4dc \ubd80\ubd84\uc744 \uc8fc\uc758\ud574\uc11c \ubcf4\uc790. \uc774 \uba54\uc11c\ub4dc\uc758 \ud638\ucd9c\ud6c4\uc5d0\ub294 <code>CComBSTR<\/code><br \/>\n\uac1d\uccb4\ub294 \ub354\uc774\uc0c1 BSTR\uc744 \uad00\ub9ac\ud558\uc9c0 \uc54a\ub294\ub2e4. \ub530\ub77c\uc11c \ub9c8\uc9c0\ub9c9\ubd80\ubd84\uc758 <code><br \/>\nSysFreeString()<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud574 \uc904 \ud544\uc694\uac00 \uc788\ub294 \uac83\uc774\ub2e4.<\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc911\uc694\ud55c \ubb38\uc81c\ub294 \uc704 \ud074\ub798\uc2a4\uac00 &amp; \uc5f0\uc0b0\uc790\ub97c \uc815\uc758\ud588\ub2e4\ub294 \ubd80\ubd84\uc774\ub2e4. \uc989, \uc774 \uc598\uae30\ub294 STL \uceec\ub809\uc158 \ud074\ub798\uc2a4 \ub4e4\uc5d0\ub294 CComBSTR\ud0c0\uc785\uc744<br \/>\n\uc9c1\uc811\uc801\uc73c\ub85c \uc4f8\uc218 \uc5c6\ub2e4\ub294 \uc598\uae30\uc774\ub2e4. \uc65c\ub0d0\ud558\uba74 STL\uceec\ub809\uc158\ub4e4\uc740 &amp; \uc5f0\uc0b0\uc790\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c \uad00\ub9ac\ud558\ub294 \uac1d\uccb4 \ub9ac\uc2a4\ud2b8 \ub4e4\uc758 \uc8fc\uc18c\uac12\uc744 \ub9ac\ud134\ud574\uc57c\ub9cc \ud558\ub294\ub370<br \/>\nCComBSTR \ud074\ub798\uc2a4\uc5d0\uc11c &amp; \uc5f0\uc0b0\uc790\ub97c \uc815\uc758\ud568\uc73c\ub85c\uc368 CComBSTR* \uc744 \ub9ac\ud134\ud558\ub294\uac8c \uc544\ub2c8\ub77c, BSTR*\ub97c \ub9ac\ud134 \ud558\uac8c \ub41c\ub2e4. \ub530\ub77c\uc11c \uc774 \uacbd\uc6b0\uc5d0\ub294<br \/>\n\uc544\ub798\uc758 \uc608\ucc98\ub7fc CAdapt \ud074\ub798\uc2a4\ub85c \ucc98\ub9ac\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4. :<\/p>\n<pre>  std::list&lt; CAdapt&lt;CComBSTR&gt; &gt; bstr_list;<\/pre>\n<p><code>CAdapt<\/code> \ud074\ub798\uc2a4\ub294 \uceec\ub799\uc158 \ud074\ub798\uc2a4\uc5d0 \ud544\uc694\ud55c \uc5f0\uc0b0\uc790\ub4e4\uc744 \ub2e4\uc2dc \uc815\uc758 \ud558\uace0 \uc788\ub2e4. \ub530\ub77c\uc11c <code>CComBSTR<\/code><br \/>\n\uc758 \ub9ac\uc2a4\ud2b8\ub97c \uc0ac\uc6a9\ud560\uc218 \uc788\uac8c \ub41c\ub2e4.<\/p>\n<h3>ATL \ud615\ubcc0\ud658 \ub9e4\ud06c\ub85c\ub4e4<\/h3>\n<p>ATL\uc758 \uc2a4\ud2b8\ub9c1 \ud615\ubcc0\ud658 \ub9e4\ud06c\ub85c \ub4e4\uc740 \uc2a4\ud2b8\ub9c1 \uc0ac\uc774\uc758 \uc778\ucf54\ub529\uc744 \ubcc0\uacbd\ud558\ub294 \ub9e4\uc6b0 \ud3b8\ub9ac\ud55c \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4. \ud2b9\ud788, \ud568\uc218\ud638\ucd9c \uc2dc\uc5d0 \ub9e4\uc6b0 \ud3b8\ub9ac\ud558\ub2e4.<br \/>\n\ub9e4\ud06c\ub85c\uc758 \uc774\ub984\ub4e4\ub3c4 \uba85\ub8cc\ud558\ub2e4. <code>[\uc18c\uc2a4 \ud0c0\uc785]<span class=\"cpp-literal\">2<\/span>[\uc0c8\ub85c\uc6b4 \ud0c0\uc785]<\/code><br \/>\n\ud639\uc740 <code>[\uc18c\uc2a4 \ud0c0\uc785]2C[\uc0c8\ub85c\uc6b4 \ud0c0\uc785]<\/code>.<br \/>\n\ub450\ubc88\uc9f8\uc758 \ub9e4\ud06c\ub85c\ub294 C\ub77c\ub294 \uae00\uc790\ub97c \ud3ec\ud568\ud558\ub294\ub370 \uc774\ub294 const\ud615(\uc77d\uae30\uc804\uc6a9)\uc73c\ub85c\uc758 \ubcc0\ud658\uc744 \uc758\ubbf8\ud55c\ub2e4. \uac01\uac01\uc758 \ud0c0\uc785\uc5d0 \ub300\ud55c \uc815\uc758\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.:<\/p>\n<p>A: MBCS \uc2a4\ud2b8\ub9c1, <code><span class=\"cpp-keyword\">char<\/span>*<\/code> (A \ub294<br \/>\nANSI\ub97c \uc758\ubbf8)<br \/>\nW: Unicode \uc2a4\ud2b8\ub9c1, <code>wchar_t*<\/code> (W\ub294 wide\ub97c \uc758\ubbf8)<br \/>\nT: <code>TCHAR<\/code> \uc2a4\ud2b8\ub9c1, <code>TCHAR*<\/code><br \/>\nOLE: <code>OLECHAR<\/code> \uc2a4\ud2b8\ub9c1, <code>OLECHAR*<\/code> (\uc0ac\uc2e4, W\uc640 \uac19\uc740 \uc758\ubbf8)<br \/>\nBSTR: <code>BSTR<\/code> <\/p>\n<p>\uadf8\ub798\uc11c, \uc608\ub97c \ub4e4\uba74, <code>W2A()<\/code> \ub9e4\ud06c\ub85c\ub294 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1\uc744 MBCS \uc2a4\ud2b8\ub9c1\uc73c\ub85c \ubcc0\ud658\ud574 \uc900\ub2e4. \uadf8\ub9ac\uace0 <code>T2CW()<\/code><br \/>\n\ub9e4\ud06c\ub85c\ub294 <code>TCHAR<\/code> \uc2a4\ud2b8\ub9c1\uc744 \uc77d\uae30\uc804\uc6a9 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1\uc73c\ub85c \ubcc0\ud658\ud574 \uc900\ub2e4.<\/p>\n<p>\uc774 \ub9e4\ud06c\ub85c\ub4e4\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \uba3c\uc800 atlconv.h \ud5e4\ub354\ub97c \ud3ec\ud568\ud574 \uc900\ub2e4.(\uc704\uc758 \ub9e4\ud06c\ub85c\ub4e4\uc740 ATL\ud504\ub85c\uc81d\ud2b8\uac00 \uc544\ub2c8\uc5ec\ub3c4 \uc0ac\uc6a9\ud560\uc218 \uc788\ub2e4.!!<br \/>\n\uc65c\ub0d0\ud558\uba74 \uc704\uc758 \ud5e4\ub354 \ud30c\uc77c\uc740 \ub2e4\ub978 ATL \ubd80\ubd84\uacfc\uc758 \uc758\uc874\uc131\uc774 \uc5c6\ub2e4. \uc989 \ub530\ub85c \ub180\uae30 \ub54c\ubb38\uc774\ub2e4. \uadf8\ub9ac\uace0 ATL\uc758 _Module \uac1d\uccb4\ub97c \ud544\uc694\ub85c \ud558\uc9c0<br \/>\n\uc54a\ub294\ub2e4.)&nbsp; \ub458\uc9f8\ub85c, \ud574\ub354\ub97c \ud3ec\ud568\ud588\uc73c\uba74 \uc704\uc758 \ub9e4\ud06c\ub85c\ub4e4\uc744 \uc0ac\uc6a9\ud558\uae30\uc5d0 \uc55e\uc11c <code>USES_CONVERSION<\/code> \ub77c\ub294<br \/>\n\ub9e4\ud06c\ub85c\ub97c \uc368\uc8fc\uc5b4\uc57c \ud55c\ub2e4. \uc704\uc758 \ub9e4\ud06c\ub85c\ub294 \ud615\ubcc0\ud658\uc744 \ud558\uae30\uc704\ud574 \ud544\uc694\ud55c \uba87\uba87 \uc9c0\uc5ed\ubcc0\uc218\ub4e4\uc744 \uc120\uc5b8\ud55c\ub2e4. \uc989, \ud615\ubcc0\ud658\uc744 \ud558\uae30\uc704\ud55c \uc9c0\uc800\ubd84\ud55c \uc77c\ub4e4\uc744 \ud574\uc900\ub2e4.<\/p>\n<p>\ubcc0\ud658\ud558\uace0\uc790 \ud560 \ud0c0\uc785\uc774 BSTR \ud0c0\uc785\uc774 \uc544\ub2d0\ub54c\ub294 \ubcc0\ud658\ub41c \ud0c0\uc785\uc740 \uc2a4\ud0dd\uc5d0 \uc800\uc7a5\ub41c\ub2e4. \ub530\ub77c\uc11c \ud568\uc218\ubc94\uc704\ub97c \ub118\uc5b4\uc11c \uc791\uc5c5\uc744 \ud558\uace0 \uc2f6\uc73c\uba74 \uc5ec\ub7ec\ubd84\uc740 \ub2e4\ub978<br \/>\n\uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\uc5d0 \ubcf5\uc0ac\ub97c \ud574\uc11c \uc800\uc7a5 \ud558\ub4e0\uc9c0 \ud574\uc11c \uacc4\uc18d\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560\uc218 \uc788\uc744 \uac83\uc774\ub2e4. \ud558\uc9c0\ub9cc BSTR\ud0c0\uc785\uc758 \uacbd\uc6b0\ub294 ::SysFreeString\ub4f1\uc758<br \/>\n\ud568\uc218\ub85c \ud574\uc81c\ub97c \uc2dc\ucf1c \uc8fc\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<p>\uc544\ub798\ub294 \ubcc0\ud658 \ub9e4\ud06c\ub85c \ub4e4\uc744 \uc0ac\uc6a9\ud558\ub294 \uc608\uc81c \ucf54\ub4dc \uc774\ub2e4. :<\/p>\n<pre><span class=\"cpp-comment\">\/\/ \ub2e4\uc591\ud55c \ud615\ud0dc\ub97c \ubc1b\ub294 \ud568\uc218\ub4e4:<\/span><br \/><span class=\"cpp-keyword\">void<\/span> Foo ( LPCWSTR wstr );<br \/><span class=\"cpp-keyword\">void<\/span> Bar ( BSTR bstr );<br \/><span class=\"cpp-comment\">\/\/ \uc2a4\ud2b8\ub9c1\uc744 \ub9ac\ud134\ud558\ub294 \ud568\uc218(BSTR*\ud615\uc5d0 \uc8fc\uc758):<\/span><br \/><span class=\"cpp-keyword\">void<\/span> Baz ( BSTR* pbstr );<br \/> <br \/><span class=\"cpp-preprocessor\">#include &lt;atlconv.h&gt;<\/span><br \/> <br \/>main()<br \/>{<br \/>  using std::string;<br \/>  USES_CONVERSION;    <span class=\"cpp-comment\">\/\/ \ud615\ubcc0\ud658 \ub9e4\ud06c\ub85c\ub97c \uc0ac\uc6a9\ud558\uae30\uc704\ud574\uc11c<\/span><br \/> <br \/><span class=\"cpp-comment\">  \/\/ \uc608\uc81c 1 : Foo()\ud568\uc218\uc5d0 MBCS\ub97c \uc804\ub2ec<\/span><br \/>  LPCSTR psz1 = <span class=\"cpp-string\">\"Bob\";<br \/>  string str1 = \"Bob\";<br \/> <br \/>  Foo ( A2CW(psz1) );<br \/>  Foo ( A2CW(str1.c_str()) );<br \/> <br \/>  \/\/ \uc608\uc81c 2: Bar()\ud568\uc218\uc5d0 MBCS \uc640 \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1 \uc804\ub2ec<br \/>  LPCSTR psz2 = \"Bob\";<br \/>  LPCWSTR wsz = L\"Bob\"<\/span>;<br \/>  BSTR bs1;<br \/>  CComBSTR bs2;<br \/> <br \/>  bs1 = A2BSTR(psz2);         <span class=\"cpp-comment\">\/\/ BSTR \uc0dd\uc131<\/span><br \/>  bs2.Attach ( W2BSTR(wsz) ); <span class=\"cpp-comment\">\/\/ CComBstr\uc5d0 \ud560\ub2f9<\/span><br \/> <br \/>  Bar ( bs1 );<br \/>  Bar ( bs2 );<br \/> <br \/>  SysFreeString ( bs1 );      <span class=\"cpp-comment\">\/\/ \ubc18\ub4dc\uc2dc \ud574\uc81c\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4.<br \/><\/span>  <span class=\"cpp-comment\">\/\/ bs2\uc758 \uacbd\uc6b0\ub294 CComBstr\uc758 \uc18c\uba78\uc790\uac00 \uc54c\uc544\uc11c \ud574\uc7ac\ud574 \uc900\ub2e4.<\/span><br \/> <br \/><span class=\"cpp-comment\">  \/\/ \uc608\uc81c 3: Baz()\ud568\uc218\uc5d0\uc11c \ub9ac\ud134\ubc18\ub4e0 BSTR\ud615\uc758 \ud615\ubcc0\ud658<\/span><br \/>  BSTR bs3 = NULL;<br \/>  string str2;<br \/> <br \/>  Baz ( &amp;bs3 );          <span class=\"cpp-comment\">\/\/ Baz()\ub97c \ud1b5\ud574 BSTR\uc744 \uc5bb\uc5c8\ub2e4.<\/span><br \/> <br \/>  str2 = W2CA(bs3);      <span class=\"cpp-comment\">\/\/ MBCS \uc2a4\ud2b8\ub9c1\uc73c\ub85c \ud615\ubcc0\ud658<\/span><br \/>  SysFreeString ( bs3 ); <span class=\"cpp-comment\">\/\/ \uba54\ubaa8\ub9ac \ud574\uc81c<\/span><br \/>}<\/pre>\n<p>\ubcf4\uc2dc\ub2e4 \uc2dc\ud53c, \uc704\uc758 \ub9e4\ud06c\ub85c \ub4e4\uc740 \ub9e4\uc6b0 \uac04\ud3b8\ud558\ub2e4. \uc774\uc81c \uba87\uac00\uc9c0 \uc0ac\uc2e4\ub4e4\uc5d0\ub9cc \uc8fc\uc758\ud558\uba74 \uc5b4\ub514\uc11c\ub4e0 \ud3b8\ud558\uac8c \uc704\uc758 \ub9e4\ud06c\ub85c\ub4e4\uc744 \uc0ac\uc6a9\ud560\uc218 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n<h3>MFC \ud074\ub798\uc2a4\ub4e4<\/h3>\n<h4>CString<\/h4>\n<p>MFC\uc758 <code>CString<\/code> \ud074\ub798\uc2a4\ub294 <code>TCHAR<\/code> \ud615 \ud0c0\uc785\uc744 \ub2e4\ub8ec\ub2e4. \ub530\ub77c\uc11c \uc815\ud655\ud55c \uce90\ub9ad\ud130 \ud0c0\uc785\uc740<br \/>\n\ucef4\ud30c\uc77c \uc2dc\uac04\uc5d0 \uc804\ucc98\ub9ac\uba85\ub839\uc5b4\ub97c \ud1b5\ud574 \ub2ec\ub77c\uc9c4\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c <code><br \/>\nCString<\/code> \ud0c0\uc785\uc740 STL\uc758 <code>string<\/code> \ud0c0\uc785\uacfc \uc720\uc0ac\ud558\ub2e4. \uc65c\ub0d0\ud558\uba74 \uc5ec\ub7ec\ubd84\uc740 CString\uc744 \ub2e4\ub8f0\ub54c<br \/>\nstd::string \uc5d0\uc11c \ucc98\ub7fc \uc9c1\uc811\uc801\uc73c\ub85c \ubb38\uc790\uc5f4 \uc870\uc791\uc744 \ud53c\ud558\uace0 \uc81c\uacf5\ub418\ub294 \ud568\uc218\ub4e4\uc744 \uc368\uc57c \ud558\uae30 \ub54c\ubb38\uc774\ub2e4. \ud55c\uac00\uc9c0 STL\uc758 \uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\ubcf4\ub2e4<br \/>\nCString\ud074\ub798\uc2a4\uac00 \ud3b8\ub9ac\ud55c \uc810\uc740 CString\ud074\ub798\uc2a4\ub294 MBCS \uc2a4\ud2b8\ub9c1\uacfc \uc720\ub2c8\ucf54\ub4dc \uc2a4\ud2b8\ub9c1\uc744 \ubaa8\ub450 \uc218\uc6a9\ud558\ub294 \uc0dd\uc131\uc790\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4\ub294 \uc0ac\uc2e4\uc774\ub2e4.<br \/>\n\uadf8\ub9ac\uace0 <code>LPCTSTR<\/code>\ud615\ubcc0\ud658 \uc5f0\uc0b0\uc790\ub97c \uc81c\uacf5\ud574\uc11c \uc5ec\ub7ec\ubd84\uc740 LPCTSTR\uc744 \ubc1b\ub294 \ud568\uc218\uc5d0 \ud2b9\ubcc4\ud55c \ud615\ubcc0\ud658 \uc5c6\uc774 \uc804\ub2ec \ud560\uc218 \uc788\ub2e4.<br \/>\nstd::string\uc5d0\uc11c \ucc98\ub7fc c_str()\ub4e4\uc758 \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud560 \ud544\uc694\uac00 \uc5c6\ub2e4. <\/p>\n<pre><span class=\"cpp-comment\">  \/\/ \uc0dd\uc131\uc790<\/span><br \/>  CString s1 = <span class=\"cpp-string\">\"char string\";  \/\/ LPCSTR<\/span><span class=\"cpp-comment\"> \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><span class=\"cpp-string\"><br \/>  CString s2 = L\"wide char string\";  \/\/ LPCWSTR<\/span><span class=\"cpp-comment\"> \ub85c \ubd80\ud130 \uc0dd\uc131<\/span><span class=\"cpp-string\"><br \/>  CString s3 ( ' ', 100 );  \/\/ 100\ubc14\uc774\ud2b8\ub97c \ud560\ub2f9\ud558\uace0 \uc2a4\ud398\uc774\uc2a4 \ubb38\uc790\ub85c \ucc44\uc6b4\ub2e4. <br \/>  CString s4 = \"New window text\"<\/span>;<br \/> <br \/>  <span class=\"cpp-comment\">\/\/ LPCTSTR\uc744 \ubc1b\ub294 \ud568\uc218\uc5d0 \uc9c1\uc811 \uc804\ub2ec\ud560\uc218 \uc788\ub2e4.<\/span><br \/>  SetWindowText ( hwndSomeWindow, s4 );<br \/> <br \/>  <span class=\"cpp-comment\">\/\/ \ud639\uc740 \uba85\uc2dc\uc801 \ud615\ubcc0\ud658\uc73c\ub85c \uc704\uc758 \uacbd\uc6b0\uc640 \uc815\ud655\ud788 \uac19\ub2e4.<\/span><br \/>  SetWindowText ( hwndSomeWindow, (LPCTSTR) s4 );<\/pre>\n<p>\ub610\ud55c \ub9ac\uc18c\uc2a4\uc758 \uc2a4\ud2b8\ub9c1 \ud14c\uc774\ube14\uc744 \uc880 \ub354 \ud3b8\ud558\uac8c \uc77d\uc5b4\uc62c\uc218 \uc788\ub2e4. \uc0dd\uc131\uc790\uc5d0\uc11c\ub3c4 \uadf8\ub7f0\uc77c\uc744 \ud574\uc8fc\uace0 Format() \uba54\uc11c\ub4dc\uc5d0\uc11c\ub3c4 \uadf8\ub7f0 \uc77c\uc774 \uac00\ub2a5\ud558\ub2e4. <\/p>\n<pre><span class=\"cpp-comment\">  \/\/ \uc2a4\ud2b8\ub9c1 \ud14c\uc774\ube14\uc758 \ubb38\uc790\uc5f4\ub85c \ubd80\ud130 \uc0dd\uc131<\/span><br \/>  CString s5 ( (LPCTSTR) IDS_SOME_STR );  <br \/>  CString s6, s7;<br \/> <br \/>  <span class=\"cpp-comment\">\/\/ LoadString\uba54\uc11c\ub4dc<\/span><br \/>  s6.LoadString ( IDS_SOME_STR );<br \/> <br \/>  <span class=\"cpp-comment\">\/\/ printf\uc2a4\ud0c0\uc77c\ub85c \ud3ec\ub9f7\ud305<\/span><br \/>  s7.Format ( IDS_SOME_FORMAT, <span class=\"cpp-string\">\"bob\"<\/span>, nSomeStuff, ... );<\/pre>\n<p>\uccab\ubc88\uc9f8\uc758 \uc0dd\uc131\uc790\ub294 \uc57d\uac04 \uc774\uc0c1\ud574 \ubcf4\uc778\ub2e4. \ud558\uc9c0\ub9cc \uc774\ub294 \uc815\ud655\ud788 \ubb38\uc11c\ud654 \ub418 \uc788\ub294 \ubb38\uc790\uc5f4 \ud14c\uc774\ube14\ub85c \ubd80\ud130 \ubb38\uc790\uc5f4\uc744 \uc0dd\uc131\ud558\ub294 \ubc29\ubc95\uc774\ub2e4. <\/p>\n<p>CString\uc5d0 \uc801\uc6a9\ub420\uc218 \uc788\ub294 \ud615\ubcc0\ud658\uc740 <code>LPCTSTR<\/code> \ud0c0\uc785 \ubfd0\uc774\ub2e4. <code>LPTSTR<\/code> (\uc989<br \/>\nnon-const) \ub85c\uc758 \ud615\ubcc0\ud658\uc740 \uc798\ubabb\ub41c \uac83\uc774\ub2e4. \ub9ce\uc740 \uc0ac\ub78c\ub4e4\uc774 LPTSTR\ud615\uc73c\ub85c \ubcc0\ud658\ud558\uace0 \uc0ac\uc6a9\ud558\ub294 \uc77c\uc744 \uc885\uc885 \ubcf4\uac8c \ub418\ub294\ub370 \uc774\ub294 \uc5ec\ub7ec\uac00\uc9c0 \ubb38\uc81c\ub97c<br \/>\n\uc57c\uae30\ud560 \uac83\uc774\ub2e4. \ub098\uc911\uc5d0 \ubc84\uadf8\ub97c \ucc3e\uae30\ub3c4 \uad49\uc7a5\ud788 \uc5b4\ub835\uac8c \ub9cc\ub4e0\ub2e4. ^^ \ub530\ub77c\uc11c LPTSTR\ud615\uc758 \uac12\uc744 \uc5bb\uc73c\ub824\uba74 <code>GetBuffer()<\/code><br \/>\n\uba54\uc11c\ub4dc\ub97c \uc368\uc57c\ub9cc \ud55c\ub2e4.<\/p>\n<p>\ub9ac\uc2a4\ud2b8 \ucf58\ud2b8\ub864\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \uc9c0\uc815\ud55c\ub2e4\uace0 \uac00\uc815\ud558\uace0 \ub2e4\uc74c \uc608\uc81c\ub97c \ubcf4\uc790.:<\/p>\n<pre>  CString str = _T(<span class=\"cpp-string\">\"new text\"<\/span>);<br \/>  LVITEM item = {<span class=\"cpp-literal\">0<\/span>};<br \/> <br \/>  item.mask = LVIF_TEXT;<br \/>  item.iItem = <span class=\"cpp-literal\">1<\/span>;<br \/>  <strike>item.pszText = (LPTSTR)(LPCTSTR) str;<\/strike> <span class=\"cpp-comment\">\/\/ \uc798\ubabb\ub41c \uc0ac\uc6a9!<\/span><br \/>  item.pszText = str.GetBuffer(<span class=\"cpp-literal\">0<\/span>);      <span class=\"cpp-comment\">\/\/ \uc62c\ubc14\ub978 \uc0ac\uc6a9<\/span><br \/> <br \/>  ListView_SetItem ( &amp;item );<br \/>  str.ReleaseBuffer();  <span class=\"cpp-comment\">\/\/ \uc704\uc758 \ubc84\ud37c\uc758 \uad00\ub9ac\ub97c \ub2e4\uc2dc CString\uc5d0\uc11c \ud558\uac8c\ub054 \ud574\uc81c<\/span><\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c <code>pszText<\/code> \uba64\ubc84\ub294 <code>LPTSTR<\/code> \ud0c0\uc785\uc774\ub2e4. \uadf8\ub7ec\ubbc0\ub85c <code>GetBuffer()<\/code><br \/>\n\uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4. <code>GetBuffer()<\/code> \uc758 \ub9e4\uac1c\ubcc0\uc218\ub294 \uc5ec\ub7ec\ubd84\uc774 \ud560\ub2f9\ud558\uae30\ub97c \uc6d0\ud558\ub294 \ubc84\ud37c\uc758 \ucd5c\uc18c \uae38\uc774\ub97c \uc9c0\uc815\ud574<br \/>\n\uc900\ub2e4. \ub9cc\uc57d 1Kb\uc758 \ubc84\ud37c\ub97c \uc6d0\ud55c\ub2e4\uba74<br \/>\n<code>GetBuffer(<span class=\"cpp-literal\">1024<\/span>)<\/code> \uc774\ub7f0\uc2dd\uc73c\ub85c \ud638\ucd9c\ud574 \uc8fc\uba74 \ub420\uac83\uc774\ub2e4.<br \/>\n0\uc744 \uc804\ub2ec\ud558\ub294 \uac83\uc740 \ud604\uc7ac \uc2a4\ud2b8\ub9c1\uc774 \ud3ec\ud568\ud55c \uc2a4\ud2b8\ub9c1\uc758 \uae38\uc774\uc640 \uc815\ud655\ud788 \uac19\uc740 \uae38\uc774\uc758 \ubc84\ud37c\ub97c \ub9ac\ud134\ud55c\ub2e4. <\/p>\n<p>\uc704\uc758 \uc0ac\uc120\uc73c\ub85c \ud45c\uc2dc\ud55c \uc798\ubabb\ub41c \uc608\uc81c\ub294 \ucef4\ud30c\uc77c \ub418\uace0 \uc0ac\uc2e4 \uc798 \uc791\ub3d9\ub418\ub294\uac83 \ucc98\ub7fc \ubcf4\uc778\ub2e4. \uadf8\ub807\uc9c0\ub9cc \uadf8 \ucf54\ub4dc\ub294 \ubd84\uba85 \uc798\ubabb\ub41c \ucf54\ub4dc\uc774\ub2e4. \uc77c\ub2e8 \uc704\uc758<br \/>\n\ucf54\ub4dc\ub294 \uac1d\uccb4\uc9c0\ud5a5\uc758 \uac1c\ub150\uc5d0 \uc5b4\uae0b\ub098\ub294 \uac83\uc774\ub2e4. \ucea1\uc290\ud654 \ub418\uc5b4\uc788\ub294 \ub370\uc774\ud130\ub97c \uc9c1\uc811\uc870\uc791\ud558\ub294 \uc2b5\uad00\uc740 \uc88b\uc9c0 \ubabb\ud558\ub2e4. \uadf8\ub9ac\uace0 \ub0b4\ubd80\uc801\uc73c\ub85c \uad00\ub9ac\ub418\ub294 \ub370\uc774\ud130\uc758 \uad6c\uc870\ub97c<br \/>\n\ubb34\ub108\ub728\ub9b4 \uac00\ub2a5\uc131\uc774 \ud06c\ub2e4. \ub530\ub77c\uc11c \ub098\uc911\uc5d0 \ubd84\uba85 \uc6d0\ud558\uc9c0 \uc54a\ub294 \uacb0\uacfc\ub97c \ucd08\ub798 \ud560 \uac83\uc774\ub2e4.<\/p>\n<p>\uc694\uc998\uc758 \ub9ce\uc740 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub4e4\uc740 \ubaa8\ub450 \ubc84\uadf8\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub2e4. \uc774\ub294 \ud504\ub85c\uadf8\ub798\uba38\ub4e4\uc758 \uc798\ubabb\ub41c \uc2b5\uad00\uc5d0\uc11c \ub098\uc624\ub294 \uacbd\ud5a5\uc774 \ub9ce\ub2e4. \ub530\ub77c\uc11c \ud56d\uc0c1 \uc62c\ubc14\ub978<br \/>\n\ud504\ub85c\uadf8\ub798\ubc0d \uc2b5\uad00\uc744 \ub9cc\ub4e4\ub824\uace0 \ub178\ub825\ud558\uc790. \ubc84\uadf8\uac00 0%\uac00 \ub418\ub294 \uadf8\ub0a0\uae4c\uc9c0&#8230;<\/p>\n<p><code>CString<\/code> \ud074\ub798\uc2a4\ub294 \ub610\ud55c BSTR\uc744 \ub9cc\ub4e4\uc5b4 \uc8fc\ub294 \ub450\uac00\uc9c0 \ud568\uc218\uac00 \uc788\ub2e4. <code>AllocSysString()<\/code><br \/>\n\uc640 <code>SetSysString()<\/code>. <code>SetSysString()<\/code> \uc774 BSTR* \uc778\uc790\ub97c \ubc1b\ub294\ub2e4\ub294 \uc810\ub9cc<br \/>\n\ube7c\uace0 , \uc704 \ub450\ud568\uc218\ub294 \uc815\ud655\ud788 \uac19\uc740 \uc77c\uc740 \ud55c\ub2e4.<\/p>\n<pre><span class=\"cpp-comment\">  \/\/ BSTR\ub85c \ubcc0\ud658<\/span><br \/>  CString s5 = <span class=\"cpp-string\">\"Bob!\"<\/span>;<br \/>  BSTR bs1 = NULL, bs2 = NULL;<br \/> <br \/>  bs1 = s5.AllocSysString();<br \/>  s5.SetSysString ( &amp;bs2 );<br \/> <br \/>  <span class=\"cpp-comment\">\/\/ ...<\/span><br \/>  SysFreeString ( bs1 );<br \/>  SysFreeString ( bs2 );<\/pre>\n<h3>WTL \ud074\ub798\uc2a4\ub4e4<\/h3>\n<h4>CString<\/h4>\n<p>WTL\uc758 <code>CString<\/code> \ud074\ub798\uc2a4\ub294 MFC\uc758 <code>CString<\/code> \ud074\ub798\uc2a4\uc640 \uc815\ud655\ud788 \ub611\uac19\uc774 \uc791\ub3d9\ud55c\ub2e4.<br \/>\n\ub530\ub77c\uc11c MFC\uc758 CString\ubd80\ubd84\uc744 \ucc38\uace0\ud558\uae38 \ubc14\ub780\ub2e4.<\/p>\n<h2>printf\uc2a4\ud0c0\uc77c\uc758 \ud3ec\ub9f7\ud305 \ud568\uc218\uc5d0\uc11c\uc758 \uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4 \uc0ac\uc6a9<\/h2>\n<p>\uc5ec\ub7ec\ubd84\uc740 <code><br \/>\nprintf()<\/code> \ud639\uc740 \ube44\uc2b7\ud55c \ubc29\uc2dd\uc73c\ub85c \uc791\ub3d9\ud558\ub294 \ud568\uc218\ub4e4\uc744 \uc0ac\uc6a9\ud560\ub54c \ud2b9\ubcc4\ud788 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4. \uc774\ub7f0 \ud568\uc218\ub4e4\uc5d0\ub294 <code>sprintf()<\/code><br \/>\n\ub4f1\uc774 \uc788\uace0, \ub610\ud55c <code><br \/>\nTRACE<\/code> \ub098 <code>ATLTRACE<\/code> \ub9e4\ud06c\ub85c\ub3c4 \ub611\uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \uc791\ub3d9\ud55c\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub098 \ub9e4\ud06c\ub85c\uc5d0\uc11c\ub294 \ud2b9\ubcc4\ud788<br \/>\n\ud0c0\uc785\uccb4\ud0b9\uc744 \ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \uc5ec\ub7ec\ubd84\uc740 \ubc18\ub4dc\uc2dc \uc2a4\ud2b8\ub9c1 \uac1d\uccb4\ub97c \uc9c1\uc811 \uc804\ub2ec\ud558\uc9c0 \uc54a\uace0 C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1\uc744 \uc804\ub2ec \ud574\uc57c\ub9cc \ud55c\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uba74, <code>_bstr_t<\/code> \uac1d\uccb4\uac00 \uac00\uc9c0\uace0 \uc788\ub294 \uc2a4\ud2b8\ub9c1\uc744 <code>ATLTRACE()<\/code> \uc5d0 \uc804\ub2ec\ud560\ub54c<br \/>\n\uc5ec\ub7ec\ubd84\uc740 \ubc18\ub4dc\uc2dc \uba85\uc2dc\uc801\uc73c\ub85c <code>(LPCSTR)<\/code> \ub098 <code>(LPCWSTR)<\/code> \ub85c \ud615\ubcc0\ud658\uc744 \ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4.:<\/p>\n<pre>  _bstr_t bs = L<span class=\"cpp-string\">\"Bob!\";<br \/>  ATLTRACE(\"The string is: %s in line %d\\n\"<\/span>, (LPCSTR) bs, nLine);<\/pre>\n<p>\ub9cc\uc57d \ud615\ubcc0\ud658\uc744 \uae5c\ubc15\ud588\ub2e4\uba74 \uc544\ub9c8 \uc608\uc0c1\uce58 \ubabb\ud55c \uacb0\uacfc\uac00 \ucd9c\ub825\ub420\uac83\uc774\ub2e4. <\/p>\n<h2>\ucd1d \uc815 \ub9ac<\/h2>\n<p>\uc2a4\ud2b8\ub9c1 \ud074\ub798\uc2a4\ub4e4 \uc0ac\uc774\uc758 \ud615\ubcc0\ud658\uc744 \uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c\uc758 \ubc29\uc2dd\uc744 \ub530\ub978\ub2e4. \uc77c\ubc18 \uc18c\uc2a4 \uc2a4\ud2b8\ub9c1\uc744 C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1\uc73c\ub85c \ubcc0\ud658\ud55c \ud6c4 \uadf8\uac83\uc744 \uc774\uc6a9\ud574 \uc0c8\ub85c\uc6b4<br \/>\n\uc2a4\ud2b8\ub9c1 \ud0c0\uc785\uc73c\ub85c \uc0dd\uc131\ud558\ub294 \uac83\uc774\ub2e4. \ub530\ub77c\uc11c \uc544\ub798\uc758 \ud45c\ub294 \uac01\uac01\uc758 \ud074\ub798\uc2a4 \ub4e4\uc774 C\uc2a4\ud0c0\uc77c\ub85c \ud615\ubcc0\ud658 \ud560\uc218 \uc788\ub294\uc9c0 \uadf8\ub9ac\uace0 C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1\uc73c\ub85c\ubd80\ud130 \uac1d\uccb4\ub97c<br \/>\n\uc0dd\uc131\ud560\uc218 \uc788\ub294\uc9c0 \uc694\uc57d\ud574\uc11c \ubcf4\uc5ec\uc8fc\uace0 \uc788\ub2e4. <\/p>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<th>Class <\/th>\n<td>string<br \/>\n    type <\/td>\n<td>convert <br \/>\n    to <code><span class=\"cpp-keyword\">char<\/span>*<\/code>? <\/td>\n<td>convert to<br \/>\n    <code><span class=\"cpp-keyword\">const<\/span> <span class=\"cpp-keyword\">char<\/span>*<\/code>?\n    <\/td>\n<td>convert to<br \/>\n    <code>wchar_t*<\/code>? <\/td>\n<td>convert to<br \/>\n    <code><span class=\"cpp-keyword\">const<\/span> wchar_t*<\/code>? <\/td>\n<td>convert<br \/>\n    to <code>BSTR<\/code>? <\/td>\n<td>construct<br \/>\n    from <code><span class=\"cpp-keyword\">char<\/span>*<\/code>? <\/td>\n<td>construct<br \/>\n    from <code>wchar_t*<\/code>? <\/td>\n<\/tr>\n<tr>\n<td><code>_bstr_t<\/code> <\/td>\n<td><code>BSTR<\/code> <\/td>\n<td>yes, cast<span style=\"font-size: 8pt;\"><sup><font color=\"red\">1<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes, cast <\/td>\n<td>yes, cast<span style=\"font-size: 8pt;\"><sup><font color=\"red\">1<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes, cast <\/td>\n<td>yes<span style=\"font-size: 8pt;\"><sup><font color=\"red\">2<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>_variant_t<\/code> <\/td>\n<td><code>BSTR<\/code> <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>cast to<br \/>\n    <code>_bstr_t<\/code><span style=\"font-size: 8pt;\"><sup><font color=\"red\">3<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>cast to<br \/>\n    <code>_bstr_t<\/code><span style=\"font-size: 8pt;\"><sup><font color=\"red\">3<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>string<\/code> <\/td>\n<td>MBCS <\/td>\n<td>no <\/td>\n<td>yes, <code>c_str()<\/code><br \/>\n    method <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes <\/td>\n<td>no <\/td>\n<\/tr>\n<tr>\n<td><code>wstring<\/code> <\/td>\n<td>Unicode <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes, <code>c_str()<\/code><br \/>\n    method <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>CComBSTR<\/code> <\/td>\n<td><code>BSTR<\/code> <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes, cast<br \/>\n    to <code>BSTR<\/code> <\/td>\n<td>yes, cast <\/td>\n<td>yes <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>CComVariant<\/code> <\/td>\n<td><code>BSTR<\/code> <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes<span style=\"font-size: 8pt;\"><sup><font color=\"red\">4<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes<span style=\"font-size: 8pt;\"><sup><font color=\"red\">4<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>CString<\/code> <\/td>\n<td><code>TCHAR<\/code> <\/td>\n<td>no<span style=\"font-size: 8pt;\"><sup><font color=\"red\">6<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>in MBCS<br \/>\n    builds, cast <\/td>\n<td>no<span style=\"font-size: 8pt;\"><sup><font color=\"red\">6<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>in Unicode<br \/>\n    builds, cast <\/td>\n<td>no<span style=\"font-size: 8pt;\"><sup><font color=\"red\">5<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes <\/td>\n<td>yes <\/td>\n<\/tr>\n<tr>\n<td><code>COleVariant<\/code> <\/td>\n<td><code>BSTR<\/code> <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>no <\/td>\n<td>yes<span style=\"font-size: 8pt;\"><sup><font color=\"red\">4<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>yes<span style=\"font-size: 8pt;\"><sup><font color=\"red\">4<\/font><\/sup><br \/>\n    <\/span><\/td>\n<td>in MBCS builds <\/td>\n<td>in Unicode builds <\/td>\n<\/tr>\n<tr>\n<td colspan=\"9\"><small><small><font color=\"red\">1<\/font> Even though <code>_bstr_t<\/code><br \/>\n    provides conversion operators to non-<code><span class=\"cpp-keyword\">const<\/span><\/code><br \/>\n    pointers, modifying the underlying buffer may cause a GPF if you overrun the<br \/>\n    buffer, or a leak when the <code>BSTR<\/code> memory is freed.<br \/>\n    <font color=\"red\">2<\/font> A <code>_bstr_t<\/code> holds a <code>BSTR<\/code><br \/>\n    internally in a <code>wchar_t*<\/code> variable, so you can use the <code><br \/>\n    <span class=\"cpp-keyword\">const<\/span> wchar_t*<\/code> converter to retrieve<br \/>\n    the <code>BSTR<\/code>. This is an implementation detail, so use this with<br \/>\n    caution, as it may change in the future.<br \/>\n    <font color=\"red\">3<\/font> This will throw an exception if the data cannot<br \/>\n    be converted to a <code>BSTR<\/code>.<br \/>\n    <font color=\"red\">4<\/font> Use <code>ChangeType()<\/code> then access the<br \/>\n    <code>bstrVal<\/code> member of the <code>VARIANT<\/code>. In MFC, this will<br \/>\n    throw an exception if the data cannot be converted.<br \/>\n    <font color=\"red\">5<\/font> There is no <code>BSTR<\/code> conversion<br \/>\n    function, however the <code>AllocSysString()<\/code> method returns a new<br \/>\n    <code>BSTR<\/code>.<br \/>\n    <font color=\"red\">6<\/font> You can temporarily get a non-const <code>TCHAR<\/code><br \/>\n    pointer using the <code>GetBuffer()<\/code> method.<\/small><\/small><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u3000<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ubcf8\uae00\uc744&nbsp; Michael Dunn\uc758 \uac15\uc88c The Complete Guide to C++ Strings, Part I \uacfc II \ub97c \ubc88\uc5ed\ud55c \uae00\uc785\ub2c8\ub2e4. \uc18c\uac1c C\uc2a4\ud0c0\uc77c \uc2a4\ud2b8\ub9c1\uc740 \uc5d0\ub7ec\ub97c \uc720\ubc1c\ud558\uae30 \uc27d\uace0, \uad00\ub9ac\ud558\uae30\uac00 \ub9e4\uc6b0 \uae4c\ub2e4\ub85c\uc6b8\ubfd0\ub9cc \uc544\ub2c8\ub77c, \ud574\ucee4\uc5d0\uac8c \uc624\ubc84\ub7f0 \ubc84\uadf8\ub97c \ub178\ucd9c\ud558\ub294 \ud0c0\uac9f\uc774 \ub420 \uc218\ub3c4 \uc788\uae30 \ub54c\ubb38\uc5d0, \uc218\ub9ce\uc740 \uc2a4\ud2b8\ub9c1 \ub7a9\ud37c \ud074\ub798\uc2a4\ub4e4\uc774 \uc0dd\uaca8\ub0ac\ub2e4. \ud558\uc9c0\ub9cc \ubd88\ud589\ud788\ub3c4 \uc5b4\ub5a4 \uc0c1\ud669\uc5d0\uc11c \uc5b4\ub5a4 \ud074\ub798\uc2a4\ub97c \uc368\uc57c\ud558\uace0 \ud639\uc740 C\uc2a4\ud2b8\ub9c1\uc744 \uc5b4\ub5bb\uac8c \ub7a9\ud37c \ud074\ub798\uc2a4\ub97c \uc774\uc6a9\ud574 \ucc98\ub9ac\ud574\uc57c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[227],"tags":[78,259],"class_list":["post-378","post","type-post","status-publish","format-standard","hentry","category-about-knowledge-programs_c","tag-vc","tag-259"],"_links":{"self":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts\/378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/comments?post=378"}],"version-history":[{"count":0,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/posts\/378\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/media?parent=378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/categories?post=378"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.msinterdev.org\/wp\/wp-json\/wp\/v2\/tags?post=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}