通常情况下,我会从函数中返回一个std::string
,因为返回const char*
会要求调用者提供一个输出内存缓冲区,而该缓冲区是不可调整大小的。
但如果它来自字符串字面值,那么返回const char*
是否有效呢?
const char* generate_c_string() {
return "ABC";
}
以这种方式进行(如果有效)可能会更快,因为我不需要动态分配内存来构建
std::string
。它很可能是有效的,因为
const char* x = "ABC";
是有效的。是否有C++标准的参考资料证实它的有效性?
std::string
,那么很可能一个std::string_view
就足够了。当然,它仍然具有相同的生命周期要求,因为它没有使用自己的存储。 - chris