В методе класса string istream& in >> читает максимум 29 символов

Создал свой класс string, реализовал метод istream & in >> , не читает более 29 символов (проверял в отладчике) Вот сам класс, и описание : String.h :

#ifndef String_h
#define String_h

#include <iostream>
using namespace std;

class String {
    int size;
    char *string;
public:
    String (const char *str = "");
    String (const String &ob);
    ~String ();
    void show ();
    String& operator = (const String &ob);
    friend ostream& operator << (ostream& out , const String &ob);
    friend istream& operator >> (istream& in, String &ob);



};

#endif /* String_hpp */

String.cpp:

#include "String.h"

String :: String (const char *str) {
    size = strlen(str) +1;
    string = new char [size];
    for (int i =0 ; i!= size -1 ; i++) {
        string[i] = str[i];
    }
    string[size] = '\0';
}

String :: String (const String &ob) {
    size = strlen(ob.string) + 1;
    string = new char [size];
    for (int i =0 ; i!= size -1 ; i++) {
          string[i] = ob.string[i];
      }
      string[size] = '\0';
}

String :: ~String () {
    delete [] string;
}

void String :: show () {
    cout << string << endl;
}

String& String ::  operator = (const String &ob) {
    if (string)
        delete [] string;
    size = strlen(ob.string) + 1;
    string = new char [size];
    strcpy(string,ob.string);
    return *this;
}

ostream& operator << (ostream& out , const String &ob) {
    out << ob.string;
    return out;

}
istream& operator >> (istream& in, String &ob) {
    for (int i = 0; i != strlen(ob.string); i++) {
        in >> std::noskipws >> (ob.string[i]);
    }
    return in;
}

Как убрать это ограничение (если его можно так назвать) ?


Ответы (0 шт):