3

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

4

3 回答 3

10

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

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

Boost Format 很好,因为它允许您使用printf-like 语法,并且如果您提供的参数与格式字符串不匹配,则会引发异常,而使用 C++ iostreams 的字符串格式往往会使您的代码非常冗长。

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

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

我希望这有帮助!

于 2009-01-01T12:41:44.893 回答
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);
于 2009-05-09T23:51:57.190 回答
0

FormatString - 智能字符串格式化
作者:Ivo Beltchev

发表在 CodeProject

于 2009-02-24T03:46:53.877 回答