string s;
cin>>s;
Run Code Online (Sandbox Code Playgroud)
假设s ="stackoverflow"
现在,如果我们访问s[3],它应该给出'c'
会s[3]是'c'或"c"?
它会是char数据类型还是字符串数据类型?
它会在运算符[]重载时返回对字符的引用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".
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)