使用指针访问std :: string中的元素

时间:2019-07-05 11:15:08

标签: c++ c++14

如何使用指针访问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;
}

1 个答案:

答案 0 :(得分:7)

有两种方法:

  1. 显式调用operator[]函数:

    std::cout << p_str->operator[](2) << '\n';
    

    或使用at函数

    std::cout << p_str->at(2) << '\n';
    

    这两个都是几乎等效。

  2. 或取消引用指针以获取对象,并使用常规索引:

    std::cout << (*p_str)[2] << '\n';
    

无论哪种方式,您都需要取消引用指针。通过“箭头”运算符->或直接取消引用运算符*都没有关系。