gpt4 book ai didi

c++ - 为什么初始化 char*[] 需要 const 而 string[] 不需要?

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:52 24 4
gpt4 key购买 nike

char* c_arguments[] = { "hi","bye" }; //(1)
std::string cpp_arguments[]= { "hi","bye" };

(1) 在 C++17 标准下的 Visual Studio 中给出错误

E0144: A value of type “const char*” cannot be used to initialize an entity of type “char *”

如果我在开头添加 const 代码编译正常。

但是为什么第一行需要const而第二行不需要呢?

如何从字符串文字数组创建不带 const 的 char*[]

代码可以使用最新的 C++ 标准的特性,而不必考虑遗留系统。

最佳答案

第二行是调用拷贝构造函数。即使文字是只读的,拷贝也不是。

要创建指向可写字符串的指针数组,您必须遍历并创建每个文字的拷贝,就像 std::string 构造函数所做的那样。

关于c++ - 为什么初始化 char*[] 需要 const 而 string[] 不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com