std::stringis not a built-in type, therefore the operator []in s[3]is a call to the member function that defines this operator in the string template.
You can find this type by looking at the man page foroperator [] :
Returns a reference to the character at the specified location pos.
reference const_reference , . " " std::basic_string<CharT>.
std::string 1, 3, substr:
s.substr(3, 1); // This produces std::string containing "c"