国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CString轉char
userphoto

2010.10.25

關注

1.傳給未分配內存的const char* (LPCTSTR)指針.
   CString cstr(asdd);
   const char* ch = (LPCTSTR)cstr;
   ch指向的地址和cstr相同。但由于使用const保證ch不會修改,所以安全.

2.傳給未分配內存的指針.
    CString cstr = "ASDDSD";
    char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
    cstr.ReleaseBuffer();
    //修改ch指向的值等于修改cstr里面的值.
    //PS:用完ch后,不用delete ch,因為這樣會破壞cstr內部空間,容易造成程序崩潰.

3.第二種用法。把CString 值賦給已分配內存的char *。
    CString cstr1 = "ASDDSD";
    int strLength = cstr1.GetLength() + 1;
    char *pValue = new char[strLength];
    strncpy(pValue, cstr1, strLength);

4.第三種用法.把CString 值賦給已分配內存char[]數(shù)組.
    CString cstr2 = "ASDDSD";
    int strLength1 = cstr1.GetLength() + 1;
    char chArray[100];
    memset(chArray,0, sizeof(bool) * 100); //將數(shù)組的垃圾內容清空.
    strncpy(chArray, cstr1, strLength1);
 
 

CString中有個LPCTSTR類型轉換運算符。所以我做以下運算:
_itoa(m_num3,(char *)((LPCTSTR)str),10)。不幸的是,當str的大小變化時,debug報錯。

錯誤的原因在于,當寫入str的字符數(shù)發(fā)生變化時,會重新分配str所占空間,這時CString類內部的字符指針就無效了,故報錯。但這在Release版本下不會出現(xiàn)問題。原來對CString類已經(jīng)進行了優(yōu)化。當需要分配的內存
小于64字節(jié)時,直接分配64字節(jié)的內存。

解決的方法是使用LPTSTR CString::GetBuffer(intnMinBufLength)。該函數(shù)是先將字符寫入一個指定大小緩沖區(qū),并返回緩沖區(qū)地址作為字符指針。而如果要用返回的地址指向的字符串去改變原來的字符串,就需在使用一切CString方法前調用ReleaseBuffer(),這樣新開辟的緩沖區(qū)就成為當前CString對象的合法字符緩沖區(qū),因為任何的CString方法的調用都可能引起緩沖區(qū)地址改變。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[轉]CString、TCHAR*、char*轉換 - 我的地盤的日志 - 網(wǎng)易博客
QString CString char三者之轉換集錦
VC++中CString和char 的相互轉換_cstring char
談新手對CString的使用
Unicode下CString(wchar_t)轉換為 char*
(const) char *轉CString 詳解(字符串類型轉換詳解,不斷補充)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服