如何使用指针访问std :: string中的各个元素?可以不用类型转换为const char *吗?
#include <iostream>
#include <string>
using namespace std;
int main() {
// I'm trying to do this...
string str = "This is a string";
cout << str[2] << endl;
// ...but by doing this instead
string *p_str = &str;
cout << /* access 3rd element of str with p_str */ << endl;
return 0;
}
答案 0 :(得分:7)
有两种方法:
显式调用operator[]
函数:
std::cout << p_str->operator[](2) << '\n';
或使用at
函数
std::cout << p_str->at(2) << '\n';
这两个都是几乎等效。
或取消引用指针以获取对象,并使用常规索引:
std::cout << (*p_str)[2] << '\n';
无论哪种方式,您都需要取消引用指针。通过“箭头”运算符->
或直接取消引用运算符*
都没有关系。