字符串中单个字符的数据类型是什么?

Arc*_*ngh 4 c++ string

string s;
cin>>s;
Run Code Online (Sandbox Code Playgroud)

假设s ="stackoverflow"

现在,如果我们访问s[3],它应该给出'c'

s[3]'c'"c"

它会是char数据类型还是字符串数据类型?

Sau*_*ahu 8

它会在运算符[]重载时返回对字符的引用std::string

char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;
Run Code Online (Sandbox Code Playgroud)

将[3]为"c"或"c"?

字符'c',而不是字符串"c".


das*_*ght 8

std::string不是内置类型,因此operator []in s[3]是对在字符串模板中定义此运算符的成员函数的调用.

您可以通过查找参考页面operator []找到该类型:

返回对指定位置pos处的字符的引用.

要查找类型reference,请const_reference从文档中查看模板的 "成员类型"部分std::basic_string<CharT>.

如果您要查找std::string从位置3开始的长度1,请substr改用:

s.substr(3, 1); // This produces std::string containing "c"
Run Code Online (Sandbox Code Playgroud)