【发布时间】:2009-07-17 16:24:48
【问题描述】:
我需要将const char * 传递给函数。在我通过它之前,我通常需要从一些变量中构建它。我永远无法决定哪种方法更优雅,整体更好:
- 分配一个足够长的数组以容纳文本并使用
sprintf构建最终变量并将其传递给函数。 - 使用 + 运算符(连接)使用变量初始化字符串
s,然后使用s.c_str()将其传递给函数。
使用数组的缺点:可能不适合整个文本。
优点:快。
使用字符串的缺点:我不需要担心内存管理,易于构建。 优点:慢。
我的第二个问题是:你通常如何从其他变量字符串构建一个完整的字符串?
【问题讨论】:
-
不是骗子,但也许值得一试:stackoverflow.com/questions/445315/…
-
即使有理由使用纯 C 方法,也请不要使用 sprintf() - 改用 snprintf()。
-
我不认为 sprintf/snprintf 是最有效的,毕竟它必须解析格式化字符串,但它确实比大部分 c++ 方法在语法上更清晰。老实说,C 和 C++ 中的标准字符串操作在优雅和效率方面都需要做一些工作。