c++ - 如何使用类成员指针反转字符数组?

标签 c++ pointers arrays

我正在尝试使用作为类成员的指针来反转数组:

#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/

相关文章:

c++ - 如何检查一次测试中有多少次 `EXPECT_*` 调用失败

c - (void*) 类型是什么?我怎样才能取消引用它?

java - Java 中泛型数组最简单的替代方法是什么?

javascript - 从 JavaScript 中的对象数组创建嵌套对象

c++ - 带有 OpenCv 和指针的 OpenMp

c++ - Qt:QWidgets 和指针

c++ - 通过指针访问非静态类成员函数的说明

c - 当用类型声明指针时,这怎么能取消引用 ‘void *’ 呢?

c - 如何解决指针错误?

arrays - 用先前的非零值替换向量中的所有零