Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
1

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

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

Здравствуйте, подскажите каким алгоритмов пользуетесь вы для решения подобной задачи.
Есть файл с любой информацией. Нужно эту информацию модифицировать. То есть найти некоторые символы и заменить их на строки.
Для примера при переводе в HTML заменить "<" на &lt;
У меня получается, постоянно сдвиги табуляций если они есть или просто коряво как-то все выходит.
Если можно словами алгоритм.
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2009, 00:33
Ответы с готовыми решениями:

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

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

Составить процедуру, которая преобразует исходный текстовый файл FVR со строками различной длины в файл FFIX со строками длиной 80 символов
Составьте процедуру, которая преобразует исходный текстовый файл FVR со строками различной длины в...

Работа со строками: замена, вставка и удаление
Создать строковую str3 переменную содержащую текст: aabbccddeeffgghhkkmmllxxyywweerrss. В строке...

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

Для замены одной последовательности на другую, происходит не посимвольно считывание, а считывание всей строки... поиска последовательности в ней. Если не обнаружена замена - записывае строку в файл-приемник, если обнаружена записываемя информацию до заменяемой последовательно во временную строку, добавляем вконец временной строки замену, добавляем в конец временной строки все что было после заменяемой вставки. Записываем в файл-приемник временную строку.
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
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();
Думаю сойдет. Если есть еще варианты, буду рад.
0
2807 / 1397 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
25.07.2009, 01:23 4
Цитата Сообщение от TGrey[WoLf
;224466]while( ! input.EOF() )
замени на
C++
1
while(input)
так как помимо признака окончания файла могу теще возникнуть ошибки. а while(input) проверяет на активность флагов ошибок, окончания файла и т.д.
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
25.07.2009, 01:45  [ТС] 5
Хмм интересно спасибо, запомню. А где это описывается?
0
2807 / 1397 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
25.07.2009, 11:18 6
TGrey[WoLf], всмысле описывается? ну я это вычитал по-моему в книги Р.Лафоре "ООП"... но по-моему встречал еще где-то
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
25.07.2009, 12:46  [ТС] 7
Ну я это и имел ввиду, где ты это прочитал.
0
Заблокирован
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
0
554 / 508 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
31.07.2009, 23:19 9
[QUOTE=Monte-Cristo;224479]замени на
C++
1
while(input)
а read (глагол) замени на ch или что-нибудь не похожее на имя функции. зачем себе и другим голову зря дурить?
0
2807 / 1397 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
31.07.2009, 23:31 10
Цитата Сообщение от novi4ok Посмотреть сообщение
а read (глагол) замени на ch или что-нибудь не похожее на имя функции. зачем себе и другим голову зря дурить?
а кто кого дурит?
0
554 / 508 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.08.2009, 20:07 11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
а кто кого дурит?
оно нас. в принципе никто не запрещает переменную char назвать getChar, но зачем?

погуглите на "how to write unmantainable code", когда-то попадалась интересная статья с похожим названием.
1
2807 / 1397 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
02.08.2009, 14:10 12
Цитата Сообщение от novi4ok Посмотреть сообщение
оно нас
оно ВАС не дурит. а если так кажется, не верьте. ВАС никто не заставляет.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2009, 14:10

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

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

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

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

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


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

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

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