在 C++ 中,我注意到如果我创建一个字符串
string str="kls";
,那么我不能写成 string s1=str[0];
。相反,我必须写成:string s1;
s1=str[0];
为什么呢?
string str="kls";
,那么我不能写成 string s1=str[0];
。相反,我必须写成:string s1;
s1=str[0];
为什么呢?
std::string
没有接受单个char
类型参数的构造函数,但有一个接受单个字符的复制赋值运算符。basic_string& operator=(charT c);
你可以写
std::string s1( 1, str[0] );
std::string s1 = { str[0] };
或者
std::string s1 = { str, 0, 1 };
s1=str[0];
可以工作,但string s1=str[0];
不行。 - 463035818_is_not_a_number
char
赋值给一个std::string
,这正是s1=str[0]
所做的。但你不能仅凭一个char
构造一个std::string
。不要混淆创建对象和修改对象。 - Pete Becker