Source: http://www.cnblogs.com/zhcncn/archive/2013/05/20/3089084.html
1. char*->string
(1) Direct conversion
char* nodename;string
String Temp2 (nodename);
2. wchar_t*->wstring
(1) Direct conversion
wchar_t* nodename;
Wstring Temp2 (nodename);
3. string->char*
wstring->char*
Method One:
(1) Convert wstring.c_str () to wchar_t*
Method Two:
(1) Convert string.c_str (), Wstring.c_str () to Ansistring (http://blog.csdn.net/bannico/article/details/7577728),
(2) Convert ansistring.c_str () to char*
method One: string temp; Const Char* nodename = temp.c_str (); method two:struct ipaddress{ std::wstring hostname; Std::vector<std::wstring>= (*= dns.hostname.c_str (); char * HN = Stra.c_str ();
But it is said to be very unreliable (http://bbs.csdn.net/topics/30479944), the Safe Way is:
Method Three: String str="123456"; int len=str. Length (); Char *cp=char[len+1]; Strpcopy (CP, str);
4. wstring->wchar_t*
string->w_char* (see 5)
Method One:
(1) Convert wstring.c_str () to wchar_t*
Method two. One:
(1) Convert wstring.c_str () to UnicodeString
(2) Convert unicodestring.c_str () to wchar_t*
Method Two. Two:
(1) Convert wstring.c_str () to Ansistring
(2) Convert ansistring.c_str () to wchar_t* using the Ansitounicode method
method One: wstring temp;wchar_t*NodeName =temp.c_str (); method two. One:structipaddress{std::wstring hostname; Std::vector<std::wstring>IPs;}; Scripting::ipaddress DNS= (*Ppreloaddns) [i]; UnicodeString Stra=dns.hostname.c_str ();//char * hn = STRA.C_STR ();wchar_t *HN =stra.c_str (); method two. Two:structipaddress{std::wstring hostname; Std::vector<std::wstring>IPs;}; Scripting::ipaddress DNS= (*Ppreloaddns) [i]; Ansistring Stra=dns.hostname.c_str ();//char * hn = STRA.C_STR ();wchar_t *HN = Ansitounicode (Stra.c_str ());
5. char*->unicodestring->wstring, wchar_t*
(1) Convert char* to UnicodeString
(2) Convert unicodestring.c_str () to Wstring, wchar_t*
std::wstring Addr (temp.c_str ()); wchar_t* addr2 = Temp.c_str (); Log_debug (_t ("Set Connection IP:") << addr); Con->setip (addr);
6. Wchar_t*->ansistring->string, char*
(1) Convert wchar_t* to Ansistring
(2) Convert Ansistring.c_str () to String, char*
wchar_t* str = WSTRING.C_STR (); Ansistring temp (str); Inet_ntoa returns char*
Std::string addr (Temp.c_str ()); char* ADDR2 = Temp.c_str (); Log_debug (_t ("Set Connection IP:") << addr); Con->setip (addr);
The following method of string,wstring mutual transfer is wrong. The ANSI character may get the correct result, but if the passed in parameter is a "Chinese" string, the correct result will not be obtained.
7. String->wstring
static wstring str2wstr (string str) { if0) return L""; Std::wstring wstr; Wstr.assign (Str.begin (), Str.end ()); return wstr;}
8. wstring->string
Static string wstr2str (wstring wstr) { if0) return""; std::string str; Str.assign (Wstr.begin (), Wstr.end ()); return str;}
The correct approach is to use MultiByteToWideChar and WideCharToMultiByte:
9. string->wstring
Std::wstring stringtowstring (ConstSTD::string&str) {LPCSTR pszsrc=Str.c_str (); intNlen = MultiByteToWideChar (CP_ACP,0, PSZSRC,-1Null0); if(Nlen = =0) returnStd::wstring (L""); wchar_t* PWSZDST =NewWchar_t[nlen]; if(!pwszdst)returnStd::wstring (L""); MultiByteToWideChar (CP_ACP,0, PSZSRC,-1, PWSZDST, Nlen); Std::wstring wstr (PWSZDST); Delete[] PWSZDST; PWSZDST=NULL; returnwstr;}
Ten. Wstring->string
STD::stringWstringtostring (Conststd::wstring&wstr) {LPCWSTR Pwszsrc=Wstr.c_str (); intNlen = WideCharToMultiByte (CP_ACP,0, PWSZSRC,-1Null0, NULL, NULL); if(Nlen = =0) returnSTD::string(""); Char* PSZDST =New Char[Nlen]; if(!pszdst)returnSTD::string(""); WideCharToMultiByte (CP_ACP,0, PWSZSRC,-1, PSZDST, Nlen, NULL, and NULL); STD::stringstr (PSZDST); Delete[] PSZDST; PSZDST=NULL; returnstr;}
Test code:
int_tmain (intARGC, _tchar*argv[]) {std::stringstr ="English"; Std::wstring Wstr= L"English"; STD::stringSTR1 =""; Std::wstring WSTR1= L""; LPCSTR PSRC="English"; LPCWSTR PWZSRC= L"English"; Stringtowstring (str); Wstringtostring (WSTR); Stringtowstring (STR1); Wstringtostring (WSTR1); Stringtowstring (PSRC); Wstringtostring (PWZSRC); return 0;}
C + + Builder string conversions (RPM)