| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Вопрос про класс строки |
| Автор: clarkkent 11.5.2008, 14:50 | ||
Добрый день уважаемым программистам. Очень надеюсь на вашу помощь. Помогите реализовать класс строки с несколькими видами функций. Пример описания класса таков:
|
| Автор: baldina 11.5.2008, 15:49 | ||||
а вообще интерфейс класса немного странный по составу, и кроме того не хватает деструктора
|
| Автор: clarkkent 11.5.2008, 17:41 | ||||||
Спасибо, в очень помогли, функция strcat (char * str) то есть конкатенация области памяти до первого хотя бы в двух словах как это можно объяснить, просто не очень представляю. А операцию добавления символа в строку как strcat (char what) как лучше сделать? Добавлено через 11 минут и 9 секунд baldina, Спасибо за информацию. Функция strcat (char * str) то есть конкатенация области памяти до первого хотя бы в двух словах как это можно объяснить, просто не очень представляю. А операцию добавления символа в строку как strcat (char what) как лучше сделать? |
| Автор: bsa 11.5.2008, 20:25 |
| clarkkent, хотел бы для начала отметить некоторую неудобность класса, имеющего такой интерфейс. Рекомендую взглянуть на интерфейс стандартного класса (там, конечно, много лишнего, но суть увидеть просто): http://www.sgi.com/tech/stl/basic_string.html Реализовать strcat очень просто: 1. твой класс должен хранить в приватной зоне указатель на начало буфера данных, размер строки в этом буфере и размер самого буфера (последние два могут совпадать, но это неоптимально, но для домашней работы сойдет). 2. метод strcat должен измерить размер добавляемой строки, если он не больше, чем свободное место в буфере, то переходим на п. 4 3. выделяем место под буфер так, чтобы туда влезла и предыдущее значение и добавляемая строка (а еще лучше в два раза больше - на будущее), копируем в него содержимое предыдущего буфера (думаю, смысла копировать больше, чем занимает строка, нет), освобождаем память предыдущего буфера, обновляем переменные класса (указатель и размеры). 4. копируем в конец строки в буфере (указатель + длина строки) добавляемую строку, обновляем переменную класса "размер строки" |
| Автор: clarkkent 11.5.2008, 21:07 |
| bsa, спасибо, просто мне надо именно так реализовать по заданию любым несложным способом, но так.. |