C++中如何通过指针传递字符串?

Ayu*_*ani 1 c++

在 C++ 编程中,我将字符串作为指针传递

代码:

#include<iostream>
using namespace std;
void changeString(string *s) {
    // change s[1] to 'a' inside this function
}

int main(void) {
    string s = "ayush";
    changeString(&s);
    cout<<s;
}
Run Code Online (Sandbox Code Playgroud)

我写了代码 *s[1] = 'a',但它显示错误。我如何访问函数“changeString”中字符串的第一个字符。请帮助我们感谢任何支持。

Laz*_*Ren 5

根据C++ 运算符优先级,下标的优先级高于取消引用。
因此,正如评论中提到的 @dxiv*s[1]被解析为*(s[1]).

所以你需要使用括号将优先级更改为(*s)[1]

顺便说一下,使用string::replace而不是赋值运算符来更改 string 是更安全的方法

更好的是,恕我直言,使用引用是更多的 C++ 方式。例如检查下面的代码。

#include<iostream>
using namespace std;

void changeStringWithReference(string &s) {
    s[3]= 'a';
}

void changeString(string *s) {
    (*s)[1] = 'a';
    // better to use string::replace
}

int main(void) {
    string s = "abcde";
    changeString(&s);
    cout << s << endl;
    changeStringWithReference(s);
    cout << s << endl;
}

Run Code Online (Sandbox Code Playgroud)