CString :: Format的替代品?

时间:2009-01-01 11:50:03

标签: c++ string mfc format

在VC6中进行字符串格式化是否有更好的替代方法,在替换之前进行语法检查?

3 个答案:

答案 0 :(得分:10)

CString提供Format格式的printf方法,但这不是类型安全的。

对于类型安全的字符串格式,您可以使用std::stringstream / std::wstringstreamBoost Format库,尽管这些都适用于C ++ std::basic_string类模板,而不是MFC CString类。我已经在VC6中成功使用了这两个。

Boost格式很好,因为它允许你使用printf - 就像语法一样,并且如果你提供的参数与格式字符串不匹配会抛出异常,而使用C ++ iostreams的字符串格式化会使你的代码相当冗长。

请注意,您可以从CString创建std::string对象,如下所示:

std::string s;
CString str( s.c_str() );

我希望这有帮助!

答案 1 :(得分:1)

结帐FastFormat。它有一个简单的语法和一个“接收器” - 接收格式化操作结果的事物的FastFormat术语 - 用于CString。

有些事情:

int i = 1;
std::string ss = "a std string";
CString cs = "a Cstring";

CString result;

fastformat::fmt(result, "i={0}, ss={1}, cs={2}", i, ss, cs);

答案 2 :(得分:0)

FormatString - smart string formatting
作者:Ivo Beltchev

发布于CodeProject