VS裡面的型別轉換

2021-07-16 04:17:00 字數 3299 閱讀 8632

string轉char* :

把string轉換為char

*有3中方法:

1.

data

如:

string str="abc";

char* p = (char*)str.data();

2.c_str

如:

string str ="gdfd";

char *p = str.c_str();

3.

copy

如:string str = "hello";

char p[40];

str.copy(p,5,0);

*(p+5)='\0';

char*轉string

string轉換為char*,可以使用string提供的函式

c_str

() ,或是函式data(),data除了返回字串內容外,

不附加結束符'\0',而

c_str

()返回乙個以『\0』結尾的字元陣列.

1. 寬位元組時:

cstring str1 = "123";

char *p = (lpstr)(lpcstr) str1;   強轉

還可以:

cstring str1 = "123";

char *t1 = str1.getbuffer(str1.getlength());

2.unicode

cstring str1 = _t("123");

int len =  widechartomultibyte(cp_acp,0,str1,-1,null,0,null,null);

char *ptxttemp = new char[len+1];

widechartomultibyte(cp_acp,0,str1,-1,ptxttemp,len,null,null);

//.......

delete ptxttemp;

char *str="aaaa";

cstring str1(str);

string s(cstring.getbuffer());

getbuffer()後一定要releasebuffer(),否則就沒有釋放緩衝區所佔的空間

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

寬位元組下:

cstring str1="123";

int i = atoi(str1);

unicode:

cstring str2 = _t("100");

int i;

swscanf(str2,_t("%d"),&i);

int i = 100;

cstring str;

str.format("%d",i);

方法1:

cstring strfilename;

lpcwstr lpcwstr = strfilename.allocsysstring();

方法2:

cstring str=_t("teststr");

uses_conversion;

lpcwstr lpcwstr = a2cw((lpcstr)str);

lpcwstr lpcwstr = l"testwstr"; 

cstring str(lpcwstr);

cstring str;

lpwstr lpstr = (lpwstr)(lpcwstr)str;

方法1:

cstring strfilename;

lpstr lpstr = strfilename.getbuffer();

strfilename.releasebuffer();

方法2:

lpstr lpstr = (lpstr)(lpcstr)strfimename;
lpstr lpstr = l"teststr"; 

cstring str(lpstr);

cstring str;

str = .....; // whatever

bstr bstr = str.allocsysstring();

unicode下:

cstring convert(bstr bstr)

寬位元組下:

cstring convert(bstr b)

1、通過multibytetowidechar函式轉換

view plain

co

char* szstr = "測試字串";  

wchar wszclassname[256];

memset(wszclassname,0,sizeof(wszclassname));

multibytetowidechar(cp_acp,0,szstr,strlen(szstr)+1,wszclassname,

sizeof(wszclassname)/sizeof(wszclassname[0]));

2、通過t2w轉換巨集

char* szstr = "測試字串";     

cstring str = cstring(szstr);

uses_conversion;

lpcwstr wszclassname = new wchar[str.getlength()+1];

wcscpy((lptstr)wszclassname,t2w((lptstr)str.getbuffer(null)));

str.releasebuffer();

3、通過a2cw轉

char* szstr = "測試字串";     

cstring str = cstring(szstr);

uses_conversion;

lpcwstr wszclassname = a2cw(w2a(str));

str.releasebuffer();

以上是在unicode狀態下

OC裡面的類型別

比如說volume v1,v2 v1和v2都是volume型別,實際上就是乙個指標,如果把v1賦值給v2後,那麼v2和v1有相同的屬性 返回值為id的型別的方法中,如果出錯的話,一般會返回nil 呼叫端會採用如下語句來判斷方法呼叫是否成功,if object nil 或者if object 或者直接...

python裡面的集合型別及操作

集合型別定義 集合是多個元素的無序組合,集合元素之間無序,且無法修改,不能存在相同的元素 a b c set pypy12345 print a print b print c 輸出結果 這體現了建立集合型別的方式為 或set 集合操作符 這個和數學中的類似 就是並差交補 操作符及應用 描述s t ...

C裡面的型別位元組長度和範圍

char 1個位元組8位 short 2個位元組16位 int 4個位元組32位 long 4個位元組 long long 8個位元組 指標 4個位元組 char 1個位元組 short 2個位元組 int 4個位元組 long 8個位元組 long long 8個位元組 指標 8個位元組 char...