Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: exp   (18.12.2008 в 11:43)
я и сам тут пробую разобраться ,) можно заменить strlen() на свою strlen() такую как дальше в коде

попробовал теперь пересобрать проект как с++
и опять не пойму почему не все переменные адекватно перемениваются .)
#include <stdio.h>
#include <conio.h> // detch()

int strlen(char *s) {
 int y = 0;
 while(s[y] != 0) y++;
 return y;
}

typedef struct xstr{
  char *v;
  int size;
  int count;

  xstr(int sz, char * str) {
 v = new char[size=sz]; // выделение памяти
 count = strlen(str);
  }
   ~xstr() { delete v; }
} xstr;


typedef struct ystr{
  char *v;
  int size;
  int count;
  
   ystr(int sz) { v = new char[size=sz]; // выделение памяти
  count = 0;
}
   ~ystr() { delete v; }
} ystr;



int main() {

ystr ybf(512);
ybf.v = "1234567890 1234567890";

printf("\n ybf.count %i\n ybf.size %i\n strlen %i\n\n"
, ybf.count, ybf.size, strlen(ybf.v));

xstr bf(512, ybf.v);

printf("\n bf.count %i\n bf.size %i\n strlen %i\n\n"
, bf.count, bf.size, strlen( bf.v ));


getch();
  return 0;
}

Никак не соображу почему с объектом bf strlen( bf.v ) возвращает как-будто размер обьекта а не строки

и как-нибудь можно-ли оптимально сделать так чтобы при создании объекта не надо было-бы указывать сколько памяти выделять, а автоматически выделялось-бы,
и как добавить метод strlen() или переопределить какой-нибудь оператор, чтобы возвращало размер строки ?


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: