C + + Builder string conversions (RPM)

Source: Internet
Author: User

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)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.