字符串和向量元素之间的区别<string> [重复]
Posted
技术标签:
【中文标题】字符串和向量元素之间的区别<string> [重复]【英文标题】:The differences between a string and an element of a vector<string> [duplicate] 【发布时间】:2017-10-18 14:48:12 【问题描述】:我是编程新手。我正在用 C++ 学习 vector
。我很好奇为什么string s = 42;
会导致错误但是
vector<string>vec(3);
vec[0] = 42;
没有。谢谢!
【问题讨论】:
【参考方案1】: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
的构造函数不存在。
【讨论】:
并且 int 可以隐式转换为 char @Steve 正确的术语是“隐式可转换”,强制转换总是显式的。【参考方案2】: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 *
【讨论】:
以上是关于字符串和向量元素之间的区别<string> [重复]的主要内容,如果未能解决你的问题,请参考以下文章