使用 CString::Format 格式化长值的错误 (??)

Bug (??) in formatting long values with CString::Format

本文关键字:错误 CString Format 格式化 使用      更新时间:2023-10-16

我对以下代码有问题:

CString cstr;
cstr.Format("SELECT foobar %ld, %ld ",  
    " AND type = '%s' ",
    1426233870,1426243870, "'OR'");

生成的CString包含错误的数字!

代码被简化,实际上我正在从数据库中选择两个时间戳之间的数据集(以秒为单位)。

能够通过格式化两个字符串并将第二个字符串附加到第一个字符串的末尾来解决我的问题,所以我不需要答案。但是,如果 sombody 可以确认这是 CString::Format 中的一个错误,这可能会保护其他人不会像我一样失去那么多的神经......

此致敬意

如果这是 MFC,它应该是这样的:

CString cstr;
cstr.Format("SELECT 123=%ld, 456=%ld AND type = '%s' ", 123, 456, "'type'");

这就像printf。