我需要传递const char *给一个函数.在我通过它之前,我通常需要从一些变量构建它.我永远无法决定哪种方法更优雅,整体更好:
sprintf构建最终变量并将其传递给函数.s使用+运算符(并置)使用变量初始化字符串,然后使用传递给函数s.c_str().使用数组的缺点:可能不适合整个文本.
亲:快.
使用字符串的缺点:我不需要担心内存管理,易于构建.亲:慢.
我的第二个问题是:你通常如何从其他变量字符串构建一个完整的字符串?
Tim*_*sch 14
除非它绝对性能至关重要,否则我倾向于使用std :: stringstream从其组件构建字符串,然后使用c_str()生成字符串.这是安全的,因为这种方式不存在缓冲区溢出的可能性,并且通常足够快.
如果分析器告诉我构建字符串是一个热点,那么你将不得不交换一些安全性以获得速度并开始使用类似sprintf的东西,但我宁愿避免这种情况.总的来说,我将此作为最后的手段.
Joh*_*itb 10
这听起来像Herb Sutter的优秀文章The Manor Formatters of Manor Farm.
为了记录:我自己使用std::ostringstream,建立字符串并通过oss.str().c_str().
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |