【发布时间】:2019-02-28 21:07:31
【问题描述】:
我想将 __int64 变量转换为 CString。代码就是这样的
__int64 i64TotalGB;
CString totalSpace;
i64TotalGB = 150;
printf("disk space: %I64d GB\n", i64TotalGB);
totalSpace.Format(_T("%I64d", i64TotalGB));
printf("totalSpace contains: %s", totalSpace);
第一个 printf 打印
"disk space: 150GB"
这是正确的,但是第二个 printf 会随机打印高数字,例如"totalSpace contains: 298070026817519929"
我也尝试使用 INT64 变量而不是 __int64 变量,但结果是一样的。这可能是什么原因?
【问题讨论】:
-
一般建议:不要再假装你的目标是 Win9x。你不是。使用
CStringW代替CString,将_T和类似的宏替换为L前缀,从此过上幸福的生活。换句话说:CStringW totalSpace; totalSpace.Format(L"%I64d", i64TotalGB); wprintf(L"totalSpace contains: %s", totalSpace.GetString());.
标签: c++ mfc printf c-strings int64