在VC6中进行字符串格式化是否有更好的替代方法,在替换之前进行语法检查?
答案 0 :(得分:10)
CString
提供Format
格式的printf
方法,但这不是类型安全的。
对于类型安全的字符串格式,您可以使用std::stringstream
/ std::wstringstream
或Boost 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