字符串与矢量元素之间的区别
问题描述:
我是编程的新手。我在C++中学习vector
。我很好奇为什么string s = 42;
导致错误,但是字符串与矢量元素之间的区别<string>
vector<string>vec(3);
vec[0] = 42;
没有。谢谢!
答
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
没有。
答
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 *
}
和一个int隐式强制转换为一个char – Steve
@Steve正确的术语是“隐式转换”,强制转换总是明确的。 –