CSting 型別轉換

2022-05-06 16:27:09 字數 2427 閱讀 3563

格式:

輸出:

(1)不含中文的情況下:

cstring s("hello world");

wcout << "s=" << s.getstring() << endl;

wcout << "s=" << (lpctstr)s << endl;\\型別轉換

wcout << "s=" << s.getbuffer()<< endl;

含有中文的情況下需要新增:

wcout.imbue(std::locale("chs"));

如下cstring s("hello world");

wcout.imbue(std::locale("chs"));

wcout << "s=" << s.getstring() << endl;

wcout << "s=" << (lpctstr)s << endl;

wcout << "s=" << s.getbuffer()<< endl;

(2)cstring是unicode編碼

cstring a = "test";

printf("%s\n", a);//輸出test;

printf("%s\n", a);//輸出t;

指標:

型別轉換:

(1)lpctstr是把cstring型別的強制轉換為常字串 lpctstr相當於const char*;輸出 :例如 cstring str; 要用printf輸出str printf("%s",(lpctstr)str);

2)cstring 值賦給已

分配記憶體

的char*

cstring cstr1 = "asddsd";

int strlength = cstr1.getlength() + 1;

char *pvalue = new char[strlength];

strncpy(pvalue, cstr1, strlength);

(3)char、char*、string轉換成cstring

char *ch = "hello";  

string s = "wrold";  

char  chr="name";

cstring cstr1(ch), cstr2(s.c_str()), cstr3("program"), cstr4(chr);

cstr2.format("%s", s.c_str());

cstr2.format("%s", s.data());

c_str()和data()區別是:前者返回帶'/0'的字串,後者則返回不帶'/0'的字串.

(5)cstring轉換成char*

若將cstring類轉換成char*(lpstr)型別,常常使用下列三種方法:

方法一,使用強制轉換。例如:

cstring thestring( "this is a test" );

lptstr lpsz =(lptstr)(lpctstr)thestring; 

方法二,使用strcpy。例如:

cstring thestring( "this is a test" );

lptstr lpsz = new tchar[thestring.getlength()+1];

_tcscpy(lpsz, thestring);

需要說明的是,strcpy(或可移值unicode/mbcs的_tcscpy)的第二個引數是 const wchar_t* (unicode)或const char* (ansi),系統編譯器將會自動對其進行轉換。

方法三,使用cstring::getbuffer。例如:

cstring s(_t("this is a test "));

lptstr p = s.getbuffer();

// 在這裡新增使用p的**

if(p != null) *p = _t('\0');

s.releasebuffer();

// 使用完後及時釋放,以便能使用其它的cstring成員函式

(6)cstring -> string

string  s(cstring.getbuffer());  

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

(7) cstring->char

strcpy_s(char[255], cstring.getbuffer());

sprintf_s(char[255], cstring.getbuffer());

附註:

mysql型別轉換c 型別轉換 C 型別轉換

一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...

java 型別轉換 強制型別轉換

今天在寫乙個demo時,碰到型別轉換問題。發現兩個不相干的class進行強制型別轉換編譯是不會通過的,但是。乙個class到乙個不相干的inte ce強制型別轉換是可以編譯通過的。可能有人感覺知道這沒什麼意義,但是感覺還是記錄下。雖然有自動型別轉換,以及強制型別轉換,但有時強制型別轉換不能通過時,可...

JS 型別轉換 強制型別轉換

js 型別轉換 強制型別轉換 一 parseint 將其他型別轉換成number型別的整數 注意 string number 1 字串中值的首字元必須是數字,轉換後才能得到具體的值 否則得到nan 2 只轉換從首字元開始的連續數字 如 2b345 轉換後只得到2 3 除了string,其他型別轉換後...