4 / 4 / 1
Регистрация: 20.12.2015
Сообщений: 47
1

Перегрузка оператора ввода

24.03.2017, 12:11. Показов 3212. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Я хочу попробовать написать свой класс string.
Вот пока собственно класс:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
class string
{
private:
    char* str;
    int length;
public:
    string();
    void resize();
    friend std::istream &operator>> (std::istream&,string&);
    friend std::ostream &operator<< (std::ostream&,string);
};
Конструктор:
C++ (Qt)
1
2
3
4
5
string::string()
{
    this->length=0;
    this->str=new char[length];
}
Функция resize():
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
void string::resize()
{
    char* copy_str=new char[this->length];
    for (int i=0;i<length;i++)
        copy_str[i]=this->str[i];
    delete [] str;
    this->length++;
    this->str=new char[length];
    for (int i=0;i<length-1;i++)
        this->str[i]=copy_str[i];
    delete [] copy_str;
}
Но вот в чем вопрос.
Как написать перегрузку оператора ввода?
Если я напишу так, то вообще ничего ни читается (т.е. можно вводить бесконечное кол-во символов, ничего не произойдёт)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
std::istream &operator>> (std::istream& input,string& s)
{
    int i=0;
    while (s.str[i]!='\r\n')
    {
        s.resize();
        input>>s.str[i];
        i++;
    }
    return input;
}
Если написать while(i<N), то считывается N символов, но пробелы не считываются

Так вот вопрос:
Как написать while так, чтобы все символы(включая пробелы) считывались до нажатия enter?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2017, 12:11
Ответы с готовыми решениями:

Перегрузка оператора ввода
Добрый день, есть вот такая штуковина: // в M.matrix лежат значения элементов матрицы //...

Перегрузка оператора ввода
Данные вводятся в виде std::istream&amp; operator &gt;&gt; (std:: istream&amp; in,const Przedzial&amp; pol) { ...

Перегрузка оператора ввода
почему не работает следующий код? class obj { unsigned int book_id; string title; unsigned...

Перегрузка оператора ввода
Добрый вечер, уважаемые форумчане. Возник вопрос о перегрузке оператора ввода. Имеется класс...

3
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
24.03.2017, 17:50 2
Лучший ответ Сообщение было отмечено Aleksey19718 как решение

Решение

C++
1
2
3
4
5
int c;
while ((c = input.get()) != '\n')
{
    //...
}
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.03.2017, 20:55 3
Цитата Сообщение от Aleksey19718 Посмотреть сообщение
string::string()
{
* * this->length=0;
* * this->str=new char[length];
}
вы в курсе да?
что выделяете в кучи массив из нуля элементов?
0
4 / 4 / 1
Регистрация: 20.12.2015
Сообщений: 47
24.03.2017, 23:16  [ТС] 4
Да))я уже исправил)))
0
24.03.2017, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2017, 23:16
Помогаю со студенческими работами здесь

Перегрузка оператора ввода >>
При компиляции выдает такие ошибки, не могу разобраться в чем проблема. Ошибка LNK2019 ссылка...

Перегрузка оператора ввода и наследование
Добрый день! Обращаюсь по такому поводу. Есть одна программа, в которой требуется перегрузить...

Перегрузка оператора ввода ,вывода
Вообщем проблема такая есть класс в нем приват поля и перегружены 2 дружественных оператора ввода...

Перегрузка оператора ввода, ошибка
struct date_of_birth { int year; int month; int day; date_of_birth(int year =0, int month...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru