gpt4 book ai didi

c++ - 这里调用了哪个 std::string 构造函数?

转载 作者:太空狗 更新时间:2023-10-29 20:37:11 26 4
gpt4 key购买 nike

我正在尝试用 C++ 构造一个字符串,如下所示。

const char *cstring = "abcd";
const string cppstr = string(cstring, cstring + strlen(cstring));

这工作正常并且 cppstr 具有值“abcd”,即使它与标准中指定的任何字符串构造函数都不匹配。谁能告诉我在这种特殊情况下调用了哪个字符串构造函数。

最佳答案

有一个模板构造函数将两个 InputIterators 作为其输入。 (参见 the cppreference.org reference, constructor (6))。原始 C++ 指针满足 InputIterators 的所有要求(实际上,它们是 RandomAccessIterators)。因此,调用

string(cstring, cstring + strlen(cstring)

调用这个构造函数。该构造函数的工作原理是遍历迭代器描述的元素范围,并将字符串构造为这些元素的拷贝。

作为注释,你也可以只写

const string cppstr{cstring, cstring + strlen(cstring)};

在这里而不是为 cppstr 分配一个值。

关于c++ - 这里调用了哪个 std::string 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713446/

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