VC ++ CLI应用程序32 - 64位CString问题

时间:2009-09-25 19:30:37

标签: c++ 64-bit win64

所以,我正在将32位应用程序的端口解析为64位。当我为x64编译时,我看到了该行的警告 ` CString sig; sig =“某事”; sig = sig.left(strlen(定义的)); <<<<<<

` 所以,我得到了sig.left的警告,它隐含地将strlen值转换为int。因为在x64 strlen返回64位size_t,我收到警告。我有什么选择解决这个问题......任何替代方法?

由于

1 个答案:

答案 0 :(得分:3)

strlen始终返回size_t。但是,size_t在64位和32位操作系统上的宽度不同。

但是,

CString.left需要一个int。你的代码应该没问题(如果你的字符串不会太长而不能超出int值),但编译器会警告你导致了这个问题。

您可以使用强制转换忽略警告。如果您想要“安全”,可以通过添加检查来实现。

所需的演员阵容将如下:

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