簡體   English   中英

指向c ++字符串的指針

[英]Pointer to c++ string

在下面的代碼中,我在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;
}

取消引用它:

(*myString)[4]

但是,我可以使用引用建議而不是指針:

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

這樣你就可以像使用對象一樣使用所有東西。

你遇到了運營商優先問題,試試吧

(*s)[0]

另一個解決方案,為了完整性:

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

首先,沒有理由在這里通過指針傳遞std::string ,使用引用。 其次,我認為這可行:

(*s)[i]

但更好的是:

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

同時減少取消引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM