字符串与矢量元素之间的区别

问题描述:

我是编程的新手。我在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没有。

+1

和一个int隐式强制转换为一个char – Steve

+3

@Steve正确的术语是“隐式转换”,强制转换总是明确的。 –

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 * 
}