CString 和 char 的轉換

2021-04-25 15:54:40 字數 2019 閱讀 3173

cstring 是一種很特殊的 c++ 物件,它裡面包含了三個值:乙個指向某個資料緩衝區的指標、乙個是該緩衝中有效的字元記數(它是不可訪問的,是位於 cstring 位址之下的乙個隱藏區域)以及乙個緩衝區長度。 有效字元數的大小可以是從0到該緩衝最大長度值減1之間的任何數(因為字串結尾有乙個null字元)。字元記數和緩衝區長度被巧妙隱藏。

(1) char*轉換成cstring

若將char*轉換成cstring,除了直接賦值外,還可使用cstring::format進行。例如:

char charray = "char test";

tchar * p = _t("char test");( 或lptstr p = _t("char test");)

cstring thestring = charray;

thestring.format(_t("%s"), charray);

thestring = p;

(2) cstring轉換成char*

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

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

cstring thestring( (_t("char test "));

lptstr lpsz =(lptstr)(lpctstr)thestring;

方法二,使用strcpy。例如:

cstring thestring( (_t("char test "));

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

_tcscpy(lpsz, thestring);

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

方法三,使用cstring::getbuffer。

如果你需要修改 cstring 中的內容,它有乙個特殊的方法可以使用,那就是 getbuffer,它的作用是返回乙個可寫的緩衝指標。 如果你只是打算修改字元或者截短字串,例如:

cstring s(_t("char test "));

lptstr p = s.getbuffer();

lptstr dot = strchr(p, ''.'');

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

if(p != null)

*p = _t('');

s.releasebuffer();                     // 使用完後及時釋放,以便能使用其它的cstring成員函式

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

類別:vc綜合 |

29) |

getsyscolor()函式

/**/ •

cstring,int,string,char*之間的...

•c++ int,char,string,cstring類...

•vc++ 2008中cstring轉換為char*

•vc中bstr,char和cstring的轉換

•cstring,tchar*,char*轉換

•char* string cstring char 操...

•cstring const char*與char*之間...

•如何cstring將轉換為char

•cstring,string 與char 的轉換

•各種轉換(bstr,char*和cstring)(...

char 和CString之間的轉換

cstring 是一種很特殊的 c 物件,它裡面包含了三個值 乙個指向某個資料緩衝區的指標 乙個是該緩衝中有效的字元記數 它是不可訪問的,是位於 cstring 位址之下的乙個隱藏區域 以及乙個緩衝區長度。有效字元數的大小可以是從0到該緩衝最大長度值減1之間的任何數 因為字串結尾有乙個null字元 ...

C string 和char 之間的轉換

c 將string加入了c 庫,我們可以用string型別的變數儲存字串,而不用字元型陣列。要使用string類,必須在標頭檔案中包含string標頭檔案 include,並且新增std命名空間。1 string轉換為char 的方法有 1.data string str good boy cons...

CString 和 char 的相互轉換

t的作用 t和 text是一樣的,一般情況 t kurt 和 kurt 沒有什麼區別。但對於unicode,一般加上 t.如果想編譯unicode版本的軟體,則加上 t可以由編譯器自動把字串轉換為unicode的。char str,或unsigned char str轉換成cstring 1。直接用...