如何使用CString::Format简化这段C++代码?
简化方案
针对你需要简化的这段MFC代码,这里提供两种实用的简化方式:
1. 用Lambda表达式内联生成格式化字符串
无需单独声明临时变量,直接在Replace的参数中通过lambda完成格式化逻辑:
rep_templ.Replace("%cardsum%", []{ CString s; s.Format("%.2f", cardsum); return s; }());
lambda会创建临时CString对象,执行Format后返回它,直接作为参数传入Replace。
2. 封装通用格式化辅助函数
如果需要多次进行类似的字符串格式化操作,可以封装一个可复用的辅助函数:
CString FormatCString(LPCTSTR format, ...) { CString result; va_list args; va_start(args, format); result.FormatV(format, args); va_end(args); return result; }
之后调用时就能一行完成替换:
rep_templ.Replace("%cardsum%", FormatCString("%.2f", cardsum));
这个辅助函数支持可变参数,用法和CString::Format完全一致,返回格式化后的CString对象,刚好适配Replace的参数要求。
内容的提问来源于stack exchange,提问作者Сергей Соколов
相关产品推荐
相关产品推荐

