CString轉換成const char*的一種有效方法

來源:互聯網
上載者:User

在Visual Studio 200X下,CString直接轉換成const char* 有點困難,下面是自己用的一種可行方案:

//得到目錄路徑

CString mPath=dlg.GetPathName();

//將目錄路徑轉換成絕對路徑以便cvLoadImage調用

int m=mPath.GetLength();
for(int index=0;index<m;index++)
{
   if(mPath.GetAt(index)=='\\')
{
 mPath.Insert(index,'\\');
 index++;
}

}

//將CString轉換成LPCTSTR

LPCTSTR p=mPath.GetBuffer();

/*

將LPCTSTR轉換為const char *,因為Unicode的問題,LPCTSTR1、在非UNICODE環境下為 const char * 2、在UNICODE環境下為
const unsigned short *

在情況2時需要藉助API函數WideCharToMultiByte


int WideCharToMultiByte(  UINT CodePage,            // code page  DWORD dwFlags,            // performance and mapping flags  LPCWSTR lpWideCharStr,    // wide-character string  int cchWideChar,          // number of chars in string  LPSTR lpMultiByteStr,     // buffer for new string  int cbMultiByte,          // size of buffer  LPCSTR lpDefaultChar,     // default for unmappable chars  LPBOOL lpUsedDefaultChar  // set when default char used);


*/

DWORD dwMinSize;
dwMinSize=WideCharToMultiByte(CP_ACP,NULL,p,-1,NULL,0,NULL,FALSE);
char * pp=new char[dwMinSize];
WideCharToMultiByte(CP_OEMCP,NULL,p,-1,pp,dwMinSize,NULL,FALSE);

//讀取映像
IplImage* ip1=cvLoadImage(pp,-1);


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.