私はプログラミングの新人です。私はvector
をC++で学んでいます。私はstring s = 42;
がエラーを引き起こすが、文字列とベクトルの要素の違い<string>
vector<string>vec(3);
vec[0] = 42;
がない理由について興味があります。ありがとうございました!
私はプログラミングの新人です。私はvector
をC++で学んでいます。私はstring s = 42;
がエラーを引き起こすが、文字列とベクトルの要素の違い<string>
vector<string>vec(3);
vec[0] = 42;
がない理由について興味があります。ありがとうございました!
std::vector
はそれとは何の関係もありません、std::vector
であなたのサンプルは
std::string s;
s = 42; // assignation: s.operator =(42)
とstd::string::operator=(char)
はコンストラクタ撮影のに対し、存在するものと異なる
std::string s;
s = 42;
しかし
std::string s = 42; // Constructor: "equivalent" to std::string s = std::string(42)
に似ていていますchar
はありません。
std::vector
は赤いニシンです。あなたは、単に次のことをしようとすると、それはまた、罰金コンパイルします:
std::string::operator=(char)
を使用しているやっている
#include <string>
int main()
{
std::string str;
str = 42;
}
。 42
は暗黙的にchar
に変換可能です。 asciiテーブルによれば、値42は'*'
文字で表されます。キャストは常に明示されている、
#include <iostream>
#include <string>
int main()
{
std::string str;
str = 42;
std::cout << str; // Prints *
}
とint型は、「暗黙的に変換」になりCHAR – Steve
@Steve正しい用語に暗黙的にキャスト可能です:私たちは、次のようにこれを確認することができます。 –