指向c ++字符串的指针

时间:2010-09-15 21:08:40

标签: c++ pointers stl

在下面的代码中,我在change()函数中使用指向c ++字符串的指针。

在使用指向字符串的指针时,是否仍然使用字符串类'运算符?例如,at()适用于[]运算符,但有没有办法使用[]运算符?

#include <string>
#include <iostream>

using namespace std;

void change(string * s){

    s->at(0) = 't';
    s->at(1) = 'w';
    // s->[2] = 'o'; does not work
    // *s[2] = 'o'; does not work


}

int main(int argc,char ** argv){

    string s1 = "one";

    change(&s1);

    cout << s1 << endl;

    return 0;
}

4 个答案:

答案 0 :(得分:12)

取消引用它:

(*myString)[4]

但是,我可以使用引用建议而不是指针:

void change(string &_myString){
    //stuff
}

通过这种方式,您可以像使用对象一样使用所有内容。

答案 1 :(得分:6)

您遇到了运营商优先问题,请尝试

(*s)[0]

答案 2 :(得分:5)

另一种解决方案,为了完整起见:

s->operator[](2) = 'o';

答案 3 :(得分:3)

首先,没有理由在这里通过指针传递std::string,使用引用。其次,我认为这可行:

(*s)[i]

但更好的是:

void change( string &s )
{
    s.at(0) = 't';
    s.at(1) = 'w';
    s[2] = 'o';
    s[2] = 'o';    
}

也减少解除引用。