|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Перегрузка ввода для собственного класса |
|
C/C++ - [решено] Перегрузка ввода для собственного класса
|
![]() Старожил Сообщения: 281 |
Доброго времени суток.
Имеется собственный класс с полем char *str. Необходимо для ввода в него перегрузить >> , чтобы из потока читалось до пробела или до комбинации символов \ или \" . #include<iostream> #include<string> #include<cstring> using namespace std; class String { int len; char *str; public: String(const char *s=""); //конструктор-преобразователь const char *c_str() const { return str; } //метод ~String();//деструктор friend istream &operator>>(istream &, String&); friend ostream &operator<<(ostream &,const String&); }; //Предложили сделать вот так, но или я туп, или так не получится : istream &operator>>(istream &s, String &p) { char c; return s >> c >> p.str >> c; } |
|
------- Отправлено: 05:49, 12-06-2010 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать а как этот класс с памятью управляется? Предположим я хочу соединить 2 строки, как это сделать?
Цитата Glareone:
На самом деле тебе нужно сделать к своей строке функцию типа append(char), которая дописывает к ней сивол. Тогда: // будет читать символы до первого встречного переноса строки istream& operator>>(istream& is, String& str) { istreambuf_iterator<char> first(is), last; for(; first!=last && *first!='\n'; ++first) str.append(*first); return is; } // будет читать символы до первого встречного пробела или переноса строки istream& operator>>(istream& is, String& str) { istreambuf_iterator<char> first(is), last; for(; first!=last && !isspace(*first); ++first) str.append(*first); return is; } |
|
Отправлено: 09:24, 12-06-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как сделать запрет ввода букв в поле для ввода input | zvezda_t | Вебмастеру | 2 | 28-12-2009 15:52 | |
[решено] Окно для ввода пароля | SANIOK_AV | AutoIt | 2 | 18-11-2009 18:44 | |
Интернет - Неверная раскладка в поле ввода для поиска в любом поисковике. | yurfed | Microsoft Windows 2000/XP | 2 | 06-12-2008 09:12 | |
Основы C++ | Перегрузка operator+ для m_string | Skrip | Программирование и базы данных | 1 | 10-08-2005 13:41 | |
Прога для компьютерного класса | Jedi | Программное обеспечение Windows | 14 | 18-03-2004 22:21 |
|