2011-08-08 51 views
0

我已經下載了一個示例代碼,因此該代碼中有一些CString變量作爲char *傳遞給sscanf()函數,編譯器隱式轉換這些CString和代碼complie fine.the其工作正常代碼是在這裏:隱式將CString轉換爲char *

CString m_strVersionXFS; 
m_strVersionXFS = _T("00029903"); 

DWORD nVersion; 
sscanf(m_strVersionXFS,"%08X",&nVersion); 

的問題是在這裏,當我試圖寫它試圖操縱以同樣的方式一個CString變量我自己簡單的代碼,但是編譯器說不能一個CString轉換爲一個cahr *

+0

只是一些小修正:它是'const char *',而不是'char *'。你不能讓它成爲非常量。 –

回答

2

我懷疑你自己的代碼是使用unicode(UNICODE常量定義)。這意味着CString正在使用寬字符,並且會隱式轉換爲wchar_t*,但不會轉換爲char*

如果是這樣的話,有三種可能的解決方案:

  1. 使用swscanfsscanf寬字符版本(推薦);
  2. 明確使用CStringA而不是CString,因此您使用的是ANSI版本CString;
  3. 將您的項目更改爲使用多字節字符而不是unicode(這可以通過Visual Studio中的項目屬性完成)。
+0

謝謝你,它的工作 –