【发布时间】:2009-01-01 11:50:02
【问题描述】:
在 VC6 中进行字符串格式化是否有更好的替代方法,在替换之前进行语法检查?
【问题讨论】:
在 VC6 中进行字符串格式化是否有更好的替代方法,在替换之前进行语法检查?
【问题讨论】:
CString 为printf 样式格式提供Format 方法,但这不是类型安全的。
对于类型安全的字符串格式,您可以使用 std::stringstream / std::wstringstream 或 Boost Format 库,尽管它们都适用于 C++ std::basic_string 类模板,而不是 MFC CString 类。我已经在 VC6 中成功使用了这两个。
Boost 格式很好,因为它允许您使用类似printf 的语法,并且如果您提供的参数与格式字符串不匹配,则会抛出异常,而使用 C++ iostreams 的字符串格式往往会使您的代码相当详细。
请注意,您可以从std::string 创建CString 对象,如下所示:
std::string s;
CString str( s.c_str() );
我希望这会有所帮助!
【讨论】:
查看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);
【讨论】:
FormatString - smart string formatting
作者:伊沃·贝尔切夫
发布在 CodeProject 上
【讨论】: