我是编程的新手。我在C ++中学习vector
。我很好奇为什么string s = 42;
会导致错误,但
vector<string>vec(3);
vec[0] = 42;
没有。谢谢!
答案 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 *
}