【发布时间】:2020-02-20 10:53:59
【问题描述】:
我正在尝试使用 C++ 中的指针和函数创建一个反转字符串的程序,但到目前为止,我的方法只返回一个空字符串而不是反转的字符串。
#include <iostream>
using namespace std;
void invertS(string *str_ptr );
int main()
{
string value {"Hello"};
string *str_ptr {nullptr};
str_ptr = &value;
invertS(str_ptr);
cout << value;
};
void invertS(string *str_ptr) {
string str = *str_ptr;
string temp = "";
int length = str.length();
int j = length - 1;
for (int i = 0; i < length; i++) {
temp[i] = str[j];
j--;
};
*str_ptr = temp;
};
结果总是一个空字符串。 请注意,我将 str_ptr 引用的字符串分配给函数内的新字符串,以便我可以在字符串上使用 .length。据我所知,由于 .length 不能用于指针。如果有更好的方法可以做到这一点,我也很高兴知道它是怎么回事。
【问题讨论】:
-
想想字符串
temp的大小...你有没有把它变大? -
据我所知,.length 不能用于指针。你可以改用
str_ptr->length()。 -
只需使用
std::reverse(s.begin(), s.end());,其中s是std::string。 -
std::string newstring{oldstring.rbegin(), oldstring.rend()};如果你想要一个反转的副本而不是原地反转它。
标签: c++ function pointers reference