C++ 更改字符串中的字符

问题描述 投票:0回答:1

如果我想更改字符串中的单个字符,我可以这样做:

#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[]) 数组是指向其第一个索引的指针。这也适用于字符串吗?我该如何解决它?

c++ string pointers
1个回答
0
投票

对于初学者来说,通过指向对象的指针将

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';
}

注意后缀下标运算符的优先级高于解引用运算符。

© www.soinside.com 2019 - 2024. All rights reserved.