常用資料型別轉換CString do

2021-08-09 07:19:38 字數 3166 閱讀 9358

double char int wchar**)" rel="noopener noreferrer">常用資料型別轉換cstring double char int wchar**)

xiaoyo02

view plain

copy to clipboard

print?

wchar

ch1[10]=」abc」; 

cstring ch2; 

ch2=ch1; 

view plain

copy to clipboard

print?

cstring src =」abc」 

wchar

des [10]; 

lstrcpy(des,src); 

view plain

copy to clipboard

print?

double des; 

wchar

src[10]; 

swscanf(src,_t("%lf"

),&des); 

view plain

copy to clipboard

print?

cstring des 

double

src 

des.format(_t("%lf"

), src); 

view plain

copy to clipboard

print?

double des; 

wchar

src[10]; 

swscanf(src,_t("%d"

),&des); 

view plain

copy to clipboard

print?

cstring des 

double

src 

des.format(_t("%d"

), src); 

view plain

copy to clipboard

print?

wchar

wbuffer[bufferlength]; 

memset(wbuffer, 0,bufferlength); 

char

* src =」abc」; 

intnlen = strlen(src) +1; 

intnwlen = 

multibytetowidechar(cp_acp, 0, src,nlen, 

null, 0); 

multibytetowidechar(cp_acp, 0, src, nlen, wbuffer, nwlen); 

//change char * to pwchar

-————————————————————

_t巨集的作用就是轉換成tchar

當支援unicode的時候,cstring內的型別是wchar_t,當轉換時必須考慮是wchar_t而不是char,所以相應的也要改變。

從cstring轉換為int

cpp**

cstring str;

int num;

num=_wtoi(str.getbuffer()); //int _wtoi (const wchar_t *_str);

//說明cstring -> wchar_t *_ 用str.getbuffer();

從int轉為cstring,因為是wchar_t所以直接用cstring::format()時會出現無法從wchar_t轉換到char的錯誤。

cpp**

cstring str;

intnum; 

str.format(_t("%d"),num); 

1 string to cstring 

cstring.format("%s",string.c_str());

2 cstring to string

string str(cstring.getbuffer());

cstring.releasebuffer()

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 cstring to char *

strcpy(char,cstring,sizeof(char));

6 char * to cstring

cstring.format("%s",char*);

cstring的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉換時,要把char定義成為const char*,這樣是最安全的。

有一篇檔案cstring 操作指南,比較深刻

getbuffer,它的作用是返回乙個可寫的緩衝指標

關於releasebuffer

當你呼叫 releasebuffer 時,字串的實際長度會被重新計算,然後存入 cstring 物件中。

必須強調一點,在 getbuffer 和 releasebuffer 之間這個範圍,一定不能使用你要操作的這個緩衝的 cstring 物件的任何方法。因為 releasebuffer 被呼叫之前,該 cstring 物件的完整性得不到保障。

例子:cstring s(...);

lptstr p = s.getbuffer();

//... 這個指標 p 發生了很多事情

int n = s.getlength(); // 很糟d!!!!! 有可能給出錯誤的答案!!!

s.trimright(); // 很糟!!!!! 不能保證能正常工作!!!!

s.releasebuffer(); // 現在應該 ok

int m = s.getlength(); // 這個結果可以保證是正確的。

s.trimright(); // 將正常工作。

mfc中releasebuffer的**:

void releasebuffer( int nnewlength = -1 )

setlength( nnewlength );

}

很明顯releasebuffer只有乙個作用,就是更新字串的長度。

CString 與其它資料型別轉換問題

cstring 標頭檔案 include string 標頭檔案 include cstring 轉char cstring cstr char p lpstr lpctstr cstr string 轉 cstring cstring.format s string.c str char 轉 cs...

資料型別轉換(常用)

一般分為強制轉換和隱式轉換兩種,隱式轉換使用的方法一般為number string boolean 一 數值型別轉換 1 數值型別轉字串型別 1 型別強制轉換 var a 10 var b sting a 2 利用隱式轉換方式,根據運算特徵來轉換,隱式轉換字串回自動執行string var a 10...

常用資料型別轉換

位元組順序 基礎資料型別之間的轉換 在上位機開發過程中,會面對各種資料型別,而各種資料型別之間的轉換是很多初學者非常頭疼的。本章內容主要是介紹各種常用的資料型別及其之間的相互轉換。bit bool 位 1 0 1 byte byte 位元組 8 0 255 short short 有符號16位整數 ...