字符串和向量元素之间的区别<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> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++ 字符串向量和数组的一些术语

C++ 字符串向量和数组的一些术语

C++ 字符串向量和数组的一些术语

C++ 字符串向量和数组的一些术语

如何更改此向量函数以接受更多元素? [复制]

上采样:在向量的每个连续元素之间插入额外的值