用CString :: Format格式化长值的Bug(??)

时间:2015-03-14 09:15:39

标签: c++ format long-integer c-strings

我遇到以下代码问题:

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

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

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

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

最好的问候

1 个答案:

答案 0 :(得分:1)

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

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

就像printf一样。