1

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

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

谢谢

4

1 回答 1

3

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

CString.left但是,需要一个 int。您的代码应该没问题(前提是您的字符串不会太长而不会超出 int 值),但编译器会警告您导致此问题。

您可以使用强制转换来忽略警告。如果你想“安全”,你可以通过添加检查来做到这一点。

所需的演员表很简单:

CString sig; 
sig = "something"; 
sig = sig.left((int)strlen(something_defined));
于 2009-09-25T19:35:46.607 回答