{"id":220,"date":"2014-07-23T03:22:01","date_gmt":"2014-07-23T12:22:01","guid":{"rendered":"http:\/\/blog.box.kr\/?p=220"},"modified":"2014-07-23T03:22:01","modified_gmt":"2014-07-23T12:22:01","slug":"variant-to-stdstring","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=220","title":{"rendered":"VARIANT to std::string"},"content":{"rendered":"<p>Here&#8217;s one way, not necessarily the best. In general, std::string doesn&#8217;t<br \/>\nplay very well with VARIANT.<\/p>\n<p>#include &lt;comutil.h&gt;<br \/>\n#include &lt;string&gt;<\/p>\n<p>std::string from_variant(VARIANT&amp; vt)<br \/>\n{<br \/>\n_bstr_t bs(vt);<br \/>\nreturn std::string(static_cast&lt;const char*&gt;(bs));<br \/>\n}<\/p>\n<p>void to_variant(const std::string&amp; str, VARIANT&amp; vt)<br \/>\n{<br \/>\n_bstr_t bs(<span class=\"skimlinks-unlinked\">str.c_str<\/span>());<br \/>\nreinterpret_cast&lt;_variant_t&amp;&gt;(vt) = bs;<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>\ub610\ud55c.. VARIANT\uac00 \ube44\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778 \ud558\ub294 \ubc29\ubc95\uc740?<\/p>\n<p>VT_NULL == value.vt || VT_EMPTY == value.vt<\/p>\n<p>\uc774\ub807\uac8c~~<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s one way, not necessarily the best. In general, std::string doesn&#8217;t play very well with VARIANT. #include &lt;comutil.h&gt; #include &lt;string&gt; std::string from_variant(VARIANT&amp; vt) { _bstr_t bs(vt); return std::string(static_cast&lt;const char*&gt;(bs)); } void to_variant(const std::string&amp; str, VARIANT&amp; vt) { _bstr_t bs(str.c_str()); reinterpret_cast&lt;_variant_t&amp;&gt;(vt) = bs; } &nbsp; \ub610\ud55c.. VARIANT\uac00 \ube44\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778 \ud558\ub294 \ubc29\ubc95\uc740? VT_NULL == value.vt || VT_EMPTY == value.vt \uc774\ub807\uac8c~~ &nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[9,19,7],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-3y","jetpack-related-posts":[{"id":228,"url":"https:\/\/blog.box.kr\/?p=228","url_meta":{"origin":220,"position":0},"title":"MFC \/ C++\ub85c \ud2b9\uc815 \uc0ac\uc774\ud2b8 \uac00\uc838\uc640\uc11c \ubd84\uc11d \ud558\uae30 \uc18c\uc2a4","date":"2014-07-23","format":false,"excerpt":"#include <stdio.h> #include <windows.h> #include <wininet.h> #include <string> #include <comdef.h> #include <mshtml.h> #import <mshtml.tlb> no_auto_exclude #pragma comment(lib, \"wininet.lib\") #include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv[]){ CoInitialize(NULL); ofstream dbfile (\"output.db\"); string sLI; string m_strURL; HINTERNET hOpen, hFile; MSHTML::IHTMLDocument2Ptr pDoc; HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2,\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":143,"url":"https:\/\/blog.box.kr\/?p=143","url_meta":{"origin":220,"position":1},"title":"Splitting a C++ std::string using tokens, e.g. \u201c;\u201d [duplicate]","date":"2014-06-29","format":false,"excerpt":"std::vector<std::string> split(const std::string& s,char seperator){ std::vector<std::string> output; std::string::size_type prev_pos =0, pos =0;while((pos = s.find(seperator, pos))!= std::string::npos){ std::string substring( s.substr(prev_pos, pos-prev_pos)); output.push_back(substring); prev_pos =++pos;} output.push_back(s.substr(prev_pos, pos-prev_pos));\/\/ Last wordreturn output;}","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":337,"url":"https:\/\/blog.box.kr\/?p=337","url_meta":{"origin":220,"position":2},"title":"\uc815\uaddc\uc2dd \uc0ac\uc6a9\ubc95 [\ud38c] boost \uc0ac\uc6a9","date":"2014-08-12","format":false,"excerpt":"\uc9c8\ubb38 ::#\uc774 \ubd99\uc740 \uc804\ud654 \ubc88\ud638 \uc55e\uc5d0\ub294 %23\uc744 \ubd99\uc774\uace0 \uc2f6\uc74c.. \u00a0 \ub2f5\ucf54\ub4dc :: std::string result, list = \"#011-222-3333\"; const char* regStr = \"(#)?(01[016789])-?(d{3,4})-?(d{4})\"; const char* subStr = \"(?1%23)$2$3$4\"; boost::regex_replace(result, list.begin(), list.end(), regStr, subStr, boost::match_default | boost::format_all); std::cout << result << std::endl; [url]http:\/\/www.boost.org\/libs\/regex\/doc\/regex_replace.html[\/url] [url]http:\/\/ourworld.compuserve.com\/homepages\/John_Maddock\/[\/url] [url]http:\/\/research.microsoft.com\/projects\/greta\/gretauserguide.htm[\/url] \u00a0","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":230,"url":"https:\/\/blog.box.kr\/?p=230","url_meta":{"origin":220,"position":3},"title":"std::string \ub2e4\ub8e8\uae30.. ( \ucc3e\uae30, \uacf5\ubc31\uc81c\uac70 \ub4f1\ub4f1)","date":"2014-07-23","format":false,"excerpt":"\ubb38\uc790\uc5f4 string #include \"StdAfx.h\" #include \"StringTest.h\" #include <algorithm> \/\/transform \uc0ac\uc6a9 #include <functional> \/\/bind1st using std::string; \/\/ \uc774\ub807\uac8c \uc9c0\uc815\ud574\uc900\ub2e4. StringTest::StringTest() { log(\"StringTest \uc0dd\uc131\uc790 \ud638\ucd9c\"); } StringTest::~StringTest(void) { log(\"StringTest \uc18c\uba78\uc790 \ud638\ucd9c\"); } void StringTest::test() { log(\"============ string class ==========\"); \/\/ \uc0dd\uc131\uc790 \u00a0 std::string s0; \/\/ \ube44\uc5b4\uc788\ub294 string std::string s1(\"012345\",3); \/\/ \uacb0\uacfc: 012\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":178,"url":"https:\/\/blog.box.kr\/?p=178","url_meta":{"origin":220,"position":4},"title":"std::map example","date":"2014-07-09","format":false,"excerpt":"\/\/ std::map example \/\/ opposite words #include <iostream> #include <map> #include <string> using namespace std; typedef std::map<std::string, std::string> TStrStrMap; typedef std::pair<std::string, std::string> TStrStrPair; int main(int argc, char *argv[]) { TStrStrMap tMap; tMap.insert(TStrStrPair(\"yes\", \"no\")); tMap.insert(TStrStrPair(\"up\", \"down\")); tMap.insert(TStrStrPair(\"left\", \"right\")); tMap.insert(TStrStrPair(\"good\", \"bad\")); std::string s; std::cout << \"Enter word: \" << std::endl;; std::cin >>\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":339,"url":"https:\/\/blog.box.kr\/?p=339","url_meta":{"origin":220,"position":5},"title":"[c++11] \uc798 \uc4f0\uba74 \ub9e4\uc6b0 \ud3b8\ub9ac\ud55c C++11\uc758 \ubb38\ubc95\ub4e4","date":"2014-08-12","format":false,"excerpt":"C\/C++\uc5b8\uc5b4\ub294 \uc800\uc218\uc900\uae4c\uc9c0 \uc815\ubc00\ud558\uac8c \ub2e4\ub8f0 \uc218 \uc788\ub294 \ubc18\uba74, \ud504\ub85c\uadf8\ub798\uba38\uac00 \uc77c\uc77c\ud788 \uad00\ub9ac\ud574\uc918\uc57c\ud558\ub294 \ubd80\ubd84\uc774 \ub9ce\ub2e4\ub294\uac8c C\/C++\uc5b8\uc5b4\uc5d0 \ub300\ud55c \uc77c\ubc18\uc801\uc778 \uacac\ud574\uc785\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc800\uc218\uc900\uae4c\uc9c0 \uc77c\uc77c\ud788 \uc2e0\uacbd\uc4f0\uc9c0 \uc54a\uc544\ub3c4 \ub418\ub294 \ucfe8\ud55c \uc5b8\uc5b4\ub97c \uac00\uc9c0\uace0 \ub192\uc740 \uc0dd\uc0b0\uc131\uc744 \ucd94\uad6c\ud558\ub294\uac8c \ucd94\uc138\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4. . . . \ub9cc, C++\uc758 \uace8\uc218\ube60\ub85c\uc11c C++11\uc744 \ud1b5\ud574 C++\ub85c\ub3c4 \ucda9\ubd84\ud788 \ucfe8\ud558\uace0 \uc0dd\uc0b0\uc131 \ub192\uc740 \ucf54-\ub4dc\ub97c \uc791\uc131\ud560\uc218 \uc788\ub2e4\uace0 \ubcc0\ud638\ub97c \ud574\ubcf4\ub824\uace0 \ud569\ub2c8\ub2e4. Visual\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/220"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=220"}],"version-history":[{"count":0,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}