提问人:Hee Hwang 提问时间:10/5/2022 最后编辑:EvgHee Hwang 更新时间:10/5/2022 访问量:98
std::string 是两个迭代器的数组吗?
Is std::string an array of two iterators?
问:
我不明白以下代码片段的行为。 怎么会这样呢?
#include <bits/stdc++.h>
using namespace std;
int main() {
string s = "apple";
string foo = {s.begin(), s.end()};
cout << foo << endl;
}
输出:apple
答:
2赞
tadman
10/5/2022
#1
不要混淆一个对象的构造方式和它的基本含义。
构造函数可以并且将会接受各种事物。很多时候,这些论点以某种方式被转换,转化为更适合所讨论类的形式。
在本例中,您正在构造一个由一系列字符组成的字符串,或者换句话说,一个任意子字符串。还有许多其他方法,包括从 转换,这是您经常看到的方法:char*
std::string example = "example";
在这里,您可以将其理解为“ 使用值 ”初始化。example
"example"
评论
1赞
Hee Hwang
10/5/2022
明白了。你当然知道我在哪里感到困惑。谢谢。
1赞
Dúthomhas
10/5/2022
相比之下,A 只是一对迭代器。不同之处在于,a 会复制其数据,而 a 不会。std::string_view
std::string
std::string_view
上一个:c++ 中奇怪的命名空间行为
下一个:pop_back() 返回值?
评论
std::string
foo
s
foo
foo
从两个迭代器列表初始化,它从所述迭代器构造一个新字符串。在问题标题中回答您的问题:否。<bits/stdc++.h>
{}
{}
std::string
std::string s { 'a', 'b', 'c'};
s.begin()
s.end()
char