2009-09-25 69 views
1

所以,我正在將32位應用程序的端口解析爲64位。當我編譯爲x64時,我看到一條警告出現在線 ` CString sig; sig =「something」; sig = sig.left(strlen(定義的東西)); < < < < < <VC++ CLI應用程序32 - 64位CString問題

` 所以,我得到它隱含轉換strlen的價值爲int的sig.left警告。由於在64位strlen返回64位size_t,我收到警告。我有什麼辦法解決這個問題..任何替代方法?

感謝

+0

既然你是移植現有的代碼,你可能堅持與CString的,但一般而言,您應該使用標準的std :: string:

隨着所需鑄件是那樣簡單。 – Dima 2009-09-25 19:43:41

回答

3

strlen總是返回size_t。但是,64位和32位操作系統上的size_t是不同的寬度。

CString.left然而,期望int。你的代碼應該沒問題(只要你的字符串不會太長,不會超過一個int值),但是編譯器會警告你你正在導致這個問題。

您可以使用強制轉換忽略該警告。如果你想「安全」,你可以通過添加檢查來實現。

CString sig; 
sig = "something"; 
sig = sig.left((int)strlen(something_defined)); 
+0

簡短的鑄造固定我的警告。但是我想在有時間的時候重新研究它。 – Gentoo 2009-09-25 20:10:12