В методе класса 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;
}
Как убрать это ограничение (если его можно так назвать) ?