所以,我正在将32位应用程序的端口解析为64位。当我为x64编译时,我看到了该行的警告 ` CString sig; sig =“某事”; sig = sig.left(strlen(定义的)); <<<<<<
` 所以,我得到了sig.left的警告,它隐含地将strlen值转换为int。因为在x64 strlen返回64位size_t,我收到警告。我有什么选择解决这个问题......任何替代方法?
由于
答案 0 :(得分:3)
strlen始终返回size_t
。但是,size_t在64位和32位操作系统上的宽度不同。
CString.left
需要一个int。你的代码应该没问题(如果你的字符串不会太长而不能超出int值),但编译器会警告你导致了这个问题。
您可以使用强制转换忽略警告。如果您想要“安全”,可以通过添加检查来实现。
所需的演员阵容将如下:
CString sig;
sig = "something";
sig = sig.left((int)strlen(something_defined));