gpt4 book ai didi

c++ - 为什么 std::vector 的字符串文字初始值设定项列表不能在 C++ 中创建 std::vector

转载 作者:行者123 更新时间:2023-12-02 11:43:39 26 4
gpt4 key购买 nike

在 C++ 中,如果我这样做:

std::vector words {"some","test","cases","here"};
  • 谁能解释一下为什么words不是std::vector<std::string>容器类型?

  • C++ 不是应该通过我给出的初始化列表来推导类型吗?

  • 如果“some”、“test”不是字符串文字,那么 std::string 文字是什么样的?

最佳答案

一个string literal ,例如"something" , 是一个 C 弦。它创建了一个 const char[N]静态存储持续时间其中 N是字符数加上空终止符。这意味着当你这样做时

std::vector words {"some","test","cases","here"};

您所做的是创建一个 std::vector<const char*>因为数组可以衰减为指针。

如果你想要 std::vector<std::string>那么你需要的是使用 std::string user defined literal 。这看起来像

using namespace std::string_literals;
std::vector words {"some"s,"test"s,"cases"s,"here"s};

现在你实际上有 std::string编译器将使用它来推断 vector 的类型。

关于c++ - 为什么 std::vector 的字符串文字初始值设定项列表不能在 C++ 中创建 std::vector<std::string> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58626067/

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