如何修复以下错误?
#include <iostream>
#include <string>
using namespace std;
int main()
{
string Vorname = "\"John\"\t";
string Name = Vorname.append("Cena");
string x = Name[2];
cout << x;
return 0;
}
字符串
错误
错误代码:已请求从“__gnu_cxx::__alloc_traits标准::分配器”转换为非标量类型“标准::__cxx11::字符串”{又称为“标准::__cxx11::基本字符串”}|
我的期望:
Output: h
型
3条答案
按热度按时间zf9nrax11#
你的代码中的问题是这一行:
字符串
Name[2]
返回一个char
,但你试图将它存储在一个std::string
对象中。要解决这个问题,你可以将x
的类型从std::string
更改为char
:型
此外,
h
是Vorname
中的第4个字符,因此您需要使用3
而不是2
:型
输出:
型
ctzwtxfj2#
C++(与Python不同)有不同的类型来表示单个字符和字符串。
如果希望
x
为单个字符,请将其更改为字符串
如果你希望
x
是一个包含一个字符的字符串,你可以使用substr()
方法:型
此外,正如Sash在his answer中注意到的,
h
位于字符串中的索引3
处。k3bvogb13#
类
std::string
(或std::basic_string
)中没有接受一个字符作为第一个参数的构造函数,如字符串
相反,你可以写例如
型
这个构造函数将被调用
型
另一种方法是使用接受初始化列表的构造函数。
型
至于你的陈述
我的期望:
型
然后字符'h'存储在字符串
Name
中,声明如下:型
所以你需要在字符串
x
的声明中使用这个索引,比如型