PDA

Просмотр полной версии : Задача со строками(С++)


Spy_John
25.05.2008, 21:30
Здравствуйте!

Помогите решить задачку на С++. Суть задачи такова: "Удалить из текстового файла заданное слово(например word)"

Задачка вроде простенькая, но не могу сообразить. Заранее спасибо!

Hubbitus
26.05.2008, 03:08
Что именно не получается-то? Имя файла откуда должно браться? Слово? Результат куда? Удалять все или первое, последнее, центральное?

Вы того, начните делать, потом запостите код, и напишите что именно не понятно/не получается.

doro
26.05.2008, 09:13
Spy_John
Первое что пришло в голову: считываешь текст в контейнер (хоть string, хоть вектор) а потом удаляешь по своей маске.
А. вообще конечно, код твой бы увидеть надо.

Voland25
01.06.2008, 17:41
Ну , если так вот навскидку... Для простоты предположим что будем читать из файла А, а результат писать в файл Б, таким образом в Б будет содержание файла А без данного слова....

Да, кстати, текстовый файл - это сильно сказано. Там как, все одной строкой? Или будут переносы и прочие усложнения?

1 - Выделяем буфер на N-ное кол-во байтов.
2 - В цикле "do - while" по условию "!EOF":
2.1 - читаем из файла количество байт, равное длине буфера - величина из п. 2.3, пишем в буфер на офсет, равный тоже величине из пункта 2.3 (пока все величины = 0, поэтому запишем все правильно)
2.2 - В цикле "for" сначала и до конца буфера, при условии "настоящая позиция + длина слова < длина буфера":
2.2.1 - ставим указатель на начало буфера
2.2.2 - ищем первое появление заданного слова, запоминаем позицию
2.2.3 - записываем в выходной файл от указателя в п. 2.2.1 до найденной позиции, прыгаем вперед на длину искомого слова.
2.2.4 - сдвигаем указатель из п. 2.2.1 на настоящую позицию
2.3 если позиция не равна длине буфера, списываем оставшийся кусочек в начало буфера, запоминаем длину (длина буфера - наст. позиция)

Это так, просто чтоб порядок в голове сделать. Если надо более серьезно - точную задачу в студию.