如果我想更改字符串中的单个字符,我可以这样做:
#include <iostream>
#include <string>
using namespace std;
int main() {
string mystring = "Hello";
mystring[0] = 'T';
cout << mystring;
return 0;
}
如果我想使用不同的函数更改字符串中的单个字符:
#include <iostream>
#include <string>
using namespace std;
void changeStr(string* mystring);
int main() {
string mystring = "Hello";
changeStr(&mystring);
cout << mystring;
return 0;
}
void changeStr(string* mystring)
{
mystring[0] = 'T';
}
为什么不起作用?整个字符串更改为“T”。我是编程新手,但仍然遇到一些指针/地址问题。我知道 char (char[]) 数组是指向其第一个索引的指针。这也适用于字符串吗?我该如何解决它?
对于初学者来说,通过指向对象的指针将
std::string
类型的对象传递给函数是没有意义的。您可以通过引用传递它。所以这个函数可能看起来像
void changeStr(string &mystring)
{
mystring[0] = 'T';
}
相应的函数调用如下
changeStr(mystring);
对于你的问题,首先你需要取消引用指针,然后才应用下标运算符
void changeStr(string* mystring)
{
( *mystring )[0] = 'T';
}
或者你可以写
void changeStr(string* mystring)
{
mystring->operator []( 0 ) = 'T';
}
注意后缀下标运算符的优先级高于解引用运算符。