字符串与vector <string>元素之间的差异

时间:2017-10-18 14:48:13

标签: c++ string vector

我是编程的新手。我在C ++中学习vector。我很好奇为什么string s = 42;会导致错误,但

vector<string>vec(3);
vec[0] = 42;

没有。谢谢!

2 个答案:

答案 0 :(得分:9)

std::vector与此无关,您的std::vector示例与

相似
std::string s;
s = 42;

std::string s = 42; // Constructor: "equivalent" to std::string s = std::string(42)

不同
std::string s;
s = 42; // assignation: s.operator =(42)

std::string::operator=(char)存在,而char的构造函数则不存在。

答案 1 :(得分:6)

std::vector是一只红鲱鱼。如果你只是尝试以下,它也将编译好:

#include <string>
int main()
{
    std::string str;
    str = 42;
}

您实际在做的是使用std::string::operator=(char)为字符串分配单个字符。 42可隐式转换为char。根据ascii表,值42由'*'字符表示。我们可以通过以下方式验证:

#include <iostream>
#include <string>
int main()
{
    std::string str;
    str = 42;
    std::cout << str; // Prints *
}