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

Pas*_*mer 5 c++ arrays string stl char

对于字符串文字,标准字符串或字符数组哪个更好?

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

const char name[] = "so"; //or to use 
const string name = "so";
Run Code Online (Sandbox Code Playgroud)

Dav*_*eas 8

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

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

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

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