如何在 C++ 中通过指针传递字符串?
Posted
技术标签:
【中文标题】如何在 C++ 中通过指针传递字符串?【英文标题】:how to pass a string by pointer in C++? 【发布时间】:2020-09-18 04:06:42 【问题描述】:在 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;
我写了代码 *s[1] = 'a',但它显示错误。我如何访问函数“changeString”中字符串的第一个字符。请帮助任何支持表示赞赏。
【问题讨论】:
*s[1]
解析为*(s[1])
。你想要的是(*s)[1]
。
推荐通过引用传递
【参考方案1】:
根据C++ Operator Precedence,下标的优先级高于取消引用。
所以正如评论中提到的@dxiv *s[1]
被解析为*(s[1])
。
所以你需要使用括号将优先级更改为(*s)[1]
。
顺便说一句,使用string::replace
而不是赋值运算符是safer way to change 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;
【讨论】:
以上是关于如何在 C++ 中通过指针传递字符串?的主要内容,如果未能解决你的问题,请参考以下文章