1. 程式人生 > >_T("D:\122.txt")【字符集問題】或【類型轉換問題】

_T("D:\122.txt")【字符集問題】或【類型轉換問題】

屬性 處理程序 -c dword 多字節字符集 height .get ans cst

項目->屬性->常規->字符集->使用多字節字符集!時用_T("Filename"),

技術分享

貌似不是字符集的問題!

1、使用替換,,,後均可以運行通過。

CString str;
str = pBuf;
MessageBox(str);

2、若不替換則僅僅當使用

使用多字節字符集!時用_T("Filename"),方可!
而使用 Unicode 字符和L
"Filename"不行!


初始代碼:

void CweFileView::OnFileWritefile()
{
    // TODO:  在此添加命令處理程序代碼
CFile file(_T("D:\\122.txt"), CFile::modeCreate | CFile::modeWrite); file.Write("IOIOIOPP", strlen("IOIOIOPP")); file.Close(); } void CweFileView::OnFileReadfile() { // TODO: 在此添加命令處理程序代碼 CFile file(_T("D:\\122.txt"),CFile::modeRead); char *pBuf; DWORD dwFileLen; dwFileLen
=file.GetLength(); pBuf=new char[dwFileLen+1]; pBuf[dwFileLen]=0; file.Read(pBuf,dwFileLen); file.Close(); MessageBox(pBuf); }

的錯誤為:error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 無法將參數 1 從“char *”轉換為“LPCTSTR”

技術分享

若,不加_T("Filename")或L"Filename"會報錯;

沒有與參數列表匹配的構造函數實例CFile::CFile





若改為使用 Unicode 字符:

技術分享

則應使用L

CFile file(L"D:\\122.txt", CFile::modeCreate | CFile::modeWrite);

CFile file(L"D:\\122.txt",CFile::modeRead);

但會出現錯誤為:error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 無法將參數 1 從“char *”轉換為“LPCTSTR”

技術分享

-------------------------------------------

技術分享

-------------------

此時修改代碼,加入

CString str;
str=pBuf;
MessageBox(str);

轉換一下(from超):

技術分享

原代碼也同樣修改:ok了!

CString str;
str = pBuf;
MessageBox(str);

    CString str;
    str = pBuf;
    MessageBox(str);    

技術分享

_T("D:\\122.txt")【字符集問題】或【類型轉換問題】