我正在尝试使用作为类成员的指针来反转数组:
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
class my_string
{
char* ptr;
int size;
public:
my_string(){};
my_string(char* str) : ptr(str),size(strlen(ptr)){};
char* getstr () {return ptr;};
void reverse();
int find (char);
void print();
};
void my_string::reverse()
{
int size2=size;
for (int i=0;i<(size/2);i++)
{
char tmp=ptr[i];
ptr[i]=ptr[size2-1];
ptr[size2-1]=ptr[i];
size2--;
}
}
int my_string::find(char c)
{
for (int i=0;i<size;i++)
{
if (ptr[i]==c)
return i;
}
return -1;
}
void my_string::print()
{
for (int i=0;i<size;i++)
cout<<ptr[i];
cout<<endl;
}
int main()
{
my_string s1("abcde");
s1.print();
s1.reverse();
s1.print();
}
我没有收到任何错误,但反向功能肯定不起作用。 有人可以向我解释为什么吗?
*这是一项家庭作业,要求我不要使用动态分配或字符串(暂时)。
最佳答案
你没有提到不能使用标准库算法,所以
std::reverse(ptr, ptr+size);
关于c++ - 如何使用类成员指针反转字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565634/