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

哪个更适合字符串文字,
标准字符串或字符数组?

我的意思是说,对于恒定的字符串,比方说

const char name[] = "so"; //or to use 
const string name = "so";
最佳答案
对于字符串文字,并且仅用于来自文字的字符串常量,我将使用const char []. std :: string的主要优点是它具有免费的内存管理,但这不是字符串文字的问题.

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

现在,在定义函数接口时,即使希望传入常量,我也更喜欢std :: string而不是const char *,因为在后一种情况下,大小会丢失,并且可能需要重新计算.

出于我自己的经验.对于带有信息/错误消息的文字字符串的每次调用日志库(使用变量参数),我都在编写.c_str().

转载注明原文:c – 哪一个使用const char []或const std :: string? - 代码日志