C Builder string相互轉換

2021-09-06 09:49:29 字數 3465 閱讀 4772

1. char*->string

(1)直接轉換

const

char*

nodename;

string temp = nodename;

string temp2(nodename);

2. 

wchar_t*->wstring

(1)直接轉換

const

wchar_t*

nodename;

wstring temp = nodename;

wstring

temp2(

nodename);

3. string->char*

wstring->char*

方法一:

(1)將wstring.c_str()轉為wchar_t*

方法二:

(1)將string.c_str(), wstring.c_str()轉為ansistring(

(2)將ansistring.c_str()轉為char*

方法一:

string temp;

const char* nodename = temp.c_str();

方法二:

struct ipaddress;

scripting::ipaddress dns = (*ppreloaddns)[i];

ansistring stra = dns.hostname.c_str();

char * hn = stra.c_str();

但據說這樣很不可靠(

),安全的做法是:

方法三:

string str="

123456";

int len=str.length();

char *cp=new

char[len+1

];strpcopy(cp, str);

4. wstring->wchar_t*

string->w_char*(參見5)

方法一:

(1)將wstring.c_str()轉為wchar_t*

方法二.一:

(1)將wstring.c_str()轉為unicodestring 

(2)將unicodestring.c_str()轉為wchar_t*

方法二.二:

(1)將wstring.c_str()轉為ansistring 

(2)使用ansitounicode方法將ansistring.c_str()轉為wchar_t*

方法一:
wstring temp;

wchar_t* nodename = temp.c_str();

方法二.一:
struct ipaddress;

scripting::ipaddress dns = (*ppreloaddns)[i];

unicodestring stra = dns.hostname.c_str();

//char * hn = stra.c_str();

wchar_t * hn = stra.c_str();

方法二.二:

struct ipaddress;

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)將char*轉為unicodestring

(2)將unicodestring.c_str()轉為wstring, wchar_t*

unicodestring temp(inet_ntoa(paddr->sin_addr)) ; //inet_ntoa returns char*

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)將wchar_t*轉為ansistring

(2)將ansistring.c_str()轉為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);

下面關於string,wstring互轉的方法是錯誤的。對ansi字元可能能得到正確結果,但如果傳入的引數是「中文」字串,將得不到正確的結果。

7. string->wstring

static wstring str2wstr (string

str )

8. wstring->string

static

string

wstr2str(wstring wstr )

正確的做法是使用multibytetowidechar和widechartomultibyte:

9. string->wstring

std::wstring stringtowstring(const std::string&str)

10. wstring->string

std::string wstringtostring(const std::wstring&wstr)

測試**:

int _tmain(int argc, _tchar*argv)

GetCurrentDirectory相關問題

dword getcurrentdirectory dword nbufferlength,size of directory buffer lptstr lpbuffer directory buffer 函式功能 獲取當前程序的當前目錄。注意當前目錄這東西有點怪異,本來確實是可執行檔案的所在目錄...

Map JSONObject String相互轉換

map轉jsonobject com.alibaba fastjson 1.2.59 jsonobject info jsonobject.parseobject json.tojsonstring map jsonobject轉map jsonobject json new jsonobject ...

AdaBoost scikit learn相關引數

base estimator 弱分類器物件,預設為cart分類樹 decisiontreeclassifier algorithm samme和samme.r samme表示構建過程中 使用樣本集分類效果作為弱分類器的權重 samme.r使用對樣本集分類的 概率大小作為弱分類器的權重。由於samme...