从C ++中的字符串文字返回const char *吗?

伯纳德

通常,我会std::string从函数返回a ,因为返回aconst char*会要求调用者提供输出内存缓冲区,并且该缓冲区不可调整大小。

但是,const char*如果它是从字符串文字中返回的,则是否有效?

const char* generate_c_string() {
    return "ABC";
}

这样做(如果有效)可能会更快,因为我不需要动态分配内存来构造a std::string

这可能是有效的,因为const char* x = "ABC";有效。是否有来自C ++标准的引用来证实其有效性?

songyuanyao

这对于字符串文字是有效的

字符串文字具有静态的存储持续时间,因此在程序生命周期内存在内存中。

返回的指针将在程序生命期内保持有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C ++中,用字符串文字初始化char数组是一个好习惯吗?

在方法调用中带有字符串文字的C ++ const char *

由c ++字符串类定义的字符串文字是否为const char []类型

由c ++字符串类定义的字符串文字是否为const char []类型

可以将字符串文字传递给采用 const char* 的函数吗?

在 C11 中,字符串文字为 char[]、unsigned char[]、char* 和 unsigned char*

从c中的char []创建字符串返回错误的值

如何从c的字符串文字中获取单个char?

我们可以将const char *分配给cpp中的字符串吗?

从C ++的构造函数中向成员const char *变量分配字符串文字时会发生什么?

C ++-char const * const *-<读取字符串的错误>

为什么在动态分配字符串时string :: c_str()返回const char *?

是什么原因初始化或为C中的char指针或C ++中的const char指针分配空字符串文字?

可以修改C中的字符串文字吗?

我应该在c中手动分配以char'\ 0'结尾的字符串吗?

在C中串联char字符串

C删除字符串中的char

C-char *模板是字符串的一种特殊类型吗?

从int转换为c字符串(const char *)失败

C ++-从const char *复制到字符串

从 C# 传递的字符串与 C++ 字符串不同,都是 const char

const char *与字符串文字的使用

C ++中的char堆栈实现有问题吗?

如何在 C 中创建 char* 字符串的 char* 子字符串?

在扫描仪中返回包含char c的字符串

C /使用动态malloc复制字符串,从const char * org到char ** cpy

如何在C ++中的字符串文字中混合十六进制char和普通char?

将字符串文字转换为char数组在C ++中实际上如何工作?

为什么C ++中的字符串文字(char *)必须是常量?