我是編程的新手。我在C++中學習vector
。我很好奇爲什麼string s = 42;
導致錯誤,但是字符串與矢量元素之間的區別<string>
vector<string>vec(3);
vec[0] = 42;
沒有。謝謝!
我是編程的新手。我在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正確的術語是「隱式轉換」,強制轉換總是明確的。 –