【发布时间】:2018-10-20 19:10:39
【问题描述】:
我写了一个简单的程序: 获取 string1 的最后一个字符并将其分配给 string2。 就像:
#include<iostream>
#include<string>
int main(int argc, char const *argv[])
{
std::string s1 = "abc!";
std::string s2 = s1.back();
std::cout << s1;
return 0;
}
但是,我得到一个编译错误:
conversion from ‘__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type {aka char}’ to non-scalar type ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ requested
我不知道这个错误的确切含义。 似乎发生了一些类型转换错误。 但是string::back的返回值应该是char吧?
为什么我不能将它分配给另一个字符串? 以及如何将 s1 的最后一个字符赋予 s2?
【问题讨论】:
-
字符串是一个字符序列。一个字符不是字符串。
-
^ 这正是错误信息的原因。
-
附带说明,
std::string s1 = something;不是赋值,而是copy initialization。