-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Организация ввода собственного типа16.10.2016, 21:03. Показов 1174. Ответов 23
Метки нет (Все метки)
Здравствуйте, создаю собственный класс для работы со строками. Так вот, встал такой вопрос: как ввести строку произвольного размера? Перегружаю оператор ">>" вот код:
Оно и понятно, ведь строки как таковой не создано. Вопрос вот в чем: Как сделать возможность объявлять переменную
Помогите, пожалуйста
0
|
16.10.2016, 21:03 | |
Ответы с готовыми решениями:
23
Обработка исключение от собственного типа Как вывести элементы контейнера set с ключами собственного типа? Организация ввода с использование do while Организация посимвольного ввода с клавиатуры |
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|||||||||||
16.10.2016, 21:11 [ТС] | 3 | ||||||||||
Прототипы:
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|
16.10.2016, 21:15 [ТС] | 5 |
А как это? Простите за невеждество
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
16.10.2016, 21:21 | 7 | |||||
это не будет работать. вместо char* s используйте std::string
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|
16.10.2016, 21:22 [ТС] | 8 |
Понятно, что можно прописать по умолчанию new char[100500]. Но разве это рациональное использование оперативной памяти? Пока на ум приходит только на вводе считывать каждый символ и забивать его в FIFO очередь. Потом же из этого формировать строку, точно зная сколько символов считалось
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|
16.10.2016, 21:27 [ТС] | 10 |
Мне не нужно использовать встроенный класс. Мне нужно написать свой. А что он делает?
0
|
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
||||||
16.10.2016, 21:35 | 12 | |||||
Сообщение было отмечено GbaLog- как решение
Решение
2
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
||||||
16.10.2016, 22:01 [ТС] | 13 | |||||
Ураа!!!! Работает!!!!! Простите за наглость, а не могли бы вы,если вас это не затруднит, немного пояснить код?
Добавлено через 10 минут Для будущих читателей темы. Вот немного подправленный, правильный код. (str - все же просто указатель, а строки нельзя присваивать друг другу простым "=" )
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
||||||
16.10.2016, 22:08 [ТС] | 15 | |||||
А нельзя ведь указатели присваивать, он же удаляться должен. А получается, что создать-то его мы создали, а удалить не удалили.
Добавлено через 1 минуту В итоге получим:
0
|
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
|
16.10.2016, 22:11 | 16 |
Не путай указатели, и то, на что они указывают. Ничего в моём коде добавлять и исправлять не нужно, там всё правильно сделано.
Добавлено через 1 минуту В итоге получили, что два раза одно и то же делаем.
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|
16.10.2016, 22:13 [ТС] | 17 |
Я не путаю. В коде, который указали вы в ветке if строка не удалялась. Она висела в динамической памяти и все работало.
Но: 1. Выделенную память всегда нужно очищать. 2. Строки так присваивать нельзя, точнее можно, но тогда мы будем обращаться к одному и тому же участку памяти. И изменив одну строку - изменится и вторая.
0
|
-3 / 2 / 4
Регистрация: 24.09.2015
Сообщений: 98
|
|
16.10.2016, 22:15 [ТС] | 19 |
Эм, но ведь в первом случае выделяется память под str, а в другом под строку в объекте obj.
0
|
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
|
16.10.2016, 22:20 | 20 |
TheTangro, ты если не понимаешь, как код работает, то не спорь, а сначала разберись.
Добавлено через 55 секунд Это я вижу. Вопрос: зачем второй раз выделяется? Добавлено через 4 минуты Смотри: память выделена, строка прочитана. Теперь просто достаточно, указателю в объекте, присвоить адрес памяти, куда была прочитана строка(предварительно освободив старую память). Можно было сразу выделить память под указатель в объекте, но тут обрабатываются возможные ошибки при чтении. Никаких утечек памяти в моём коде нет.
0
|
16.10.2016, 22:20 | |
16.10.2016, 22:20 | |
Помогаю со студенческими работами здесь
20
Организация вычислений во время ввода данных Организация вычислений во время ввода данных Организация вычислений во время ввода данных Организация ввода и вывода одномерных массивов в турбо С Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |