Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
#1

Замена символов строками - C++

25.07.2009, 00:33. Просмотров 2004. Ответов 11
Метки нет (Все метки)

Здравствуйте, подскажите каким алгоритмов пользуетесь вы для решения подобной задачи.
Есть файл с любой информацией. Нужно эту информацию модифицировать. То есть найти некоторые символы и заменить их на строки.
Для примера при переводе в HTML заменить "<" на &lt;
У меня получается, постоянно сдвиги табуляций если они есть или просто коряво как-то все выходит.
Если можно словами алгоритм.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2009, 00:33     Замена символов строками
Посмотрите здесь:

Работа со строками. Замена символов - C++
Всем привет. Вот полное задание: &quot;Введи с клавиатуры 3 строки в самой длинной поменяй первое слово с последним и выведи, а в самой короткой...

Работа со строками (замена символов) - C++
Даны две строки. Удалить из каждой из них символы, отсутствующие в другой

Замена в одномерном массиве, работа со строками из нулей и единиц - C++
HELP!!!я ноль в с++ не могу сделать данные задачи: &quot;Даны одномерные массивы чисел Х,размерностью n и Y,размерностью m. необходимо...

Работа со строками символов - C++
описать функцию работы со строкой символов, которая найдет сколько раз входит в строку некоторый произвольный символ(задать как параметр...

Работа со строками символов - C++
Помогите решить пжл. Дан текст (2-3 строки) в файле F1. Описать функцию преобразования строки, которая заменяет все повторные...

Работа со строками символов - C++
Помогите, пожалуйста, написать программу на С++ Разработать программу, которая вводит текст и осуществляет его форматирование...

Работа со строками символов - C++
Заданная строка , состоящая из слов , разделенным одним или несколькими пробелами. Вывести на экран все слова в которых количество гласных...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
25.07.2009, 00:46     Замена символов строками #2
Если один символ заменить на сочитание какое-нить, тогда так:
1. Открывается исходный файл
2. Открывается файл приемник
3. Читается символ из исходного файла
4. Если символ не заменяемый, он переписывается в приемочный файл, если заменяемые - записывается нужная последовательность.
5. Закрываем файлы.
6. Исходный файл удаляется
7. Приемный файл переименовывается в исходный.

Для замены одной последовательности на другую, происходит не посимвольно считывание, а считывание всей строки... поиска последовательности в ней. Если не обнаружена замена - записывае строку в файл-приемник, если обнаружена записываемя информацию до заменяемой последовательно во временную строку, добавляем вконец временной строки замену, добавляем в конец временной строки все что было после заменяемой вставки. Записываем в файл-приемник временную строку.
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
25.07.2009, 00:58  [ТС]     Замена символов строками #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ifstream input("in.txt");
ofstream out("out.txt");
char read;
while( ! input.EOF() )
{
      input >> read;
      if( read == '>' )
            out << "&gt;";
      else if( .... )
            .....
      ....
      else
            out << read;
}
input.close();
out.close();
Думаю сойдет. Если есть еще варианты, буду рад.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
25.07.2009, 01:23     Замена символов строками #4
Цитата Сообщение от TGrey[WoLf
;224466]while( ! input.EOF() )
замени на
C++
1
while(input)
так как помимо признака окончания файла могу теще возникнуть ошибки. а while(input) проверяет на активность флагов ошибок, окончания файла и т.д.
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
25.07.2009, 01:45  [ТС]     Замена символов строками #5
Хмм интересно спасибо, запомню. А где это описывается?
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
25.07.2009, 11:18     Замена символов строками #6
TGrey[WoLf], всмысле описывается? ну я это вычитал по-моему в книги Р.Лафоре "ООП"... но по-моему встречал еще где-то
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
25.07.2009, 12:46  [ТС]     Замена символов строками #7
Ну я это и имел ввиду, где ты это прочитал.
YurA_280784
Заблокирован
31.07.2009, 11:35     Замена символов строками #8
Вообще если юзнуть возможности CString то мона сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
FILE * f = fopen("fPath","rb+");
fseek(f,0,SEEK_END);
long fLen = ftell(f);
fseek(f,0,SEEK_SET);
char * chBuf = (char *)malloc(fLen);
fread(chBuf,1,fLen,f);
fclose(f);
CString str = (CString)chBuf;
str.Replace('>',"&gt");
f = fopen("fPath","wb+");
fLen = str.GetLength();
fprintf(str.GetBuffer(fLen),1,fLen,f);
fclose(f);
Написал очень просто, никаких там проверок на наличие файла и т.д. при желании мона оснастить прогу, а проект мона делать Консоль с поддержкой MFC ну или в самом MFC
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
31.07.2009, 23:19     Замена символов строками #9
[QUOTE=Monte-Cristo;224479]замени на
C++
1
while(input)
а read (глагол) замени на ch или что-нибудь не похожее на имя функции. зачем себе и другим голову зря дурить?
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
31.07.2009, 23:31     Замена символов строками #10
Цитата Сообщение от novi4ok Посмотреть сообщение
а read (глагол) замени на ch или что-нибудь не похожее на имя функции. зачем себе и другим голову зря дурить?
а кто кого дурит?
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.08.2009, 20:07     Замена символов строками #11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
а кто кого дурит?
оно нас. в принципе никто не запрещает переменную char назвать getChar, но зачем?

погуглите на "how to write unmantainable code", когда-то попадалась интересная статья с похожим названием.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2009, 14:10     Замена символов строками
Еще ссылки по теме:

Работа с символьными строками - вставка символов - C++ Builder
Задача: ввести любые символы в Edit1. Если попадается знак '!', то поставить перед ним и после него пробел. Вывести результат в Edit2. ...

Работа со строками как с массивом символов - C++
Работаю в Borland C++3.1 Нt понимаю почему не компиллируется, выдает постоянно ошибку - &quot;Unable to open file 'TCLASS.LIB' &quot; ...

Работа со строками. Удаление отдельных символов - C++
Есть проблемка: нужно написать программу, которая бы удаляла те слова, в которых есть цифры. Вот с этого я начал, дальше даже не могу...

Работа со строками. Нахождение повторяющихся символов и вывод на экран - C++
Всем ещё раз доброго времени суток. На форуме уже находил статьи с аналогом моей программы, но нигде не встретил нужного решения. ...

Класс для работы со строками (с поддержкой китайских символов) - C++
Всем привет! Необходима помощь по созданию класса на C++ для работы со строками, строки должны поддерживать китайские символы. Заранее...


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

Или воспользуйтесь поиском по форуму:
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.08.2009, 14:10     Замена символов строками #12
Цитата Сообщение от novi4ok Посмотреть сообщение
оно нас
оно ВАС не дурит. а если так кажется, не верьте. ВАС никто не заставляет.
Yandex
Объявления
02.08.2009, 14:10     Замена символов строками
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru