c++ - 使用 const char[] 或 const std::string 哪一个?

标签 c++ arrays string stl char

哪个对字符串文字更好, 标准字符串还是字符数组?

我的意思是说常量字符串,比如说

const char name[] = "so"; //or to use 
const string name = "so";

最佳答案

对于字符串文字,并且仅对于来自文字的字符串常量,我会使用 const char[]std::string 的主要优点是它有免费的内存管理,但这不是字符串文字的问题。

它是文字的实际类型,它可以直接用于任何需要旧 C 样式空终止字符串或 C++ 字符串(隐式转换开始)的 API。您还可以通过使用数组而不是指针来获得编译时大小的实现。

现在,在定义函数接口(interface)时,即使打算传入常量,我也更喜欢 std::string 而不是 const char*,如后一种情况大小丢失,可能需要重新计算。

根据我自己的经验。我已经习惯了在每次调用日志库(使用可变参数)时为带有信息/错误消息的文字字符串编写 .c_str()

关于c++ - 使用 const char[] 或 const std::string 哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2099731/

相关文章:

c++ - 如何禁用包含文件夹的警告?

ios - 如何将 Swift.ArraySlice 转换为 Swift.Array?

python - N 维数组使用示例

c++ - 如何将字符串与 chrono::milliseconds 连接起来?

c++ - 从 std::string 获取第一个字符

c++ - 在 union 中存储 STL 迭代器是否合法?

c++ - libmysql.dll for 64bit Qt w/MSVS2017 compiler

Java 线程 ArrayIndexOutOfBoundsException

c - 如何在 C 中声明常量字符串以及它们有什么用?

c++ - 等待服务启动/停止