gpt4 book ai didi

c++11 - 使用 {} 构造函数直接从 char* 初始化 std::string

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:03 25 4
gpt4 key购买 nike

我有一个接受 std::string& 的函数:

void f(std::string& s) { ... }

我有一个const char*,它应该是那个函数的输入参数。这有效:

const char* s1 = "test";
std::string s2{s};
f(s2);

这不是:

const char* s1 = "test";
f({s1});

为什么这不可能?有趣的是,CLion IDE 没有提示,但编译器是:

no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::basic_string<char>&’

最佳答案

这与从 char const* 构造 std::string 无关。

f 需要一个字符串的左值,通过当场创建一个临时实例,您提供了一个右值,它不能绑定(bind)到非常量左值引用。 f(string{}) 同样无效。

关于c++11 - 使用 {} 构造函数直接从 char* 初始化 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225952/

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