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