在 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”中字符串的第一个字符。请帮助我们感谢任何支持。
根据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)