им пытается отменить массив с помощью указателя, который является членом класса:Как изменить массив символов с помощью указателя на элемент?
#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();
}
им не получают никаких ошибок, но обратная функция, безусловно, не работает. может кто-нибудь объяснить мне почему?
* Это домашнее задание с просьбой не использовать динамическое распределение или строки (на данный момент).
у вас 'size2-1', я думаю он должен быть 'size2-i' – dave