23.12.2007
Недавно, через Yandex наткнулся на сайт www.kak-tot.narod.ru Это сайт Олега Дятлова. Это сайт, в котором "словам тесно, мыслям просторно". И жизнь этого энергичного человека меня изумляет. Каким извилистым путем пришел он в программирование. И кое-чего добился! Его часики украшают экран моего компа. Минимум средств - максимум эффекта. И так во всем. Ну да как говорится то ли еще будет!
Так же помещаю в рубрику C++ три полезных (по крайней мере для меня) утилиты.
Люблю писать программы, работающие с текстовыми файлами и строками.
Программа Ar_05.zip
Программа Ar_06.zip
ПрограммаAr_04_25_07.zip
ПрограммаAr_04_25_07.zip-экзешник и три текстовых файла.
Описание трех программ:
Программа Ar_05.zip - исходники для компиляции и сборки.
Эта консольная программа откомпилирована и выполнена в 6-й версии
программы Microsoft Visual C++
Программа написана для вставки фрагмента текста перед словом "// Listing". Это мне надо было для перевода в html-вариант книги Либерти "С++".
Эта программа - утилита для программиста. Программным способом можно изменить слово вместо "// Listing" на другое слово, которое программа будет искать в текстовом файле fileFrom.txt. Текстовый Файл fileFrom1.txt, в котором находится текст для вставки тоже может иметь любое содержание.
Программа копирует из файла fileFrom.txt в файл fileTo.txt, но каждый раз перед словом "// Listing" вставляет фрагмент текста, копируемый из файла fileFrom1.txt Слово "// Listing" задано программным способом. А содержание текстовых файлов естественно можно изменять произвольно. Все вставки текста идут с новой строки. И после вставки текст опять начинается с новой строки.
Предусматривает все случаи. Когда ключевое слово "// Listing" находится в начале строки, в середине строки, в конце строки, а так же когда повторяется несколько раз в одной строке.
Программа считывает текстовый файл fileFrom.txt построчно в объект tmp класса string при помощи функции readline(). Затем объект tmp анализируется на предмет наличия в нем нужного слова "// Listing". Это делается при помощи функции find().
n = tmp.find(str); // найдем позицию вхождения
переменная n может иметь три основных варианта положения слова в строке.
1. Если такого слова в строке tmp нет (функция поиска возвращает значение n = -1), то эта строка tmp без изменений сразу копируется в новый текстовый файл fileTo.txt.
Если слово "// Listing" в строке tmp найдено, то определяется его местоположение (индекс) в строке tmp.
Затем идет три варианта положения слова в строке. В начале строки (функция поиска возвращает нулевое значение), в середине строки (функция поиска возвращает положительное значение, совпадающее с индексом первого вхождения слова в строку). Если слово word в анализируемой строке tmp встречается несколько раз, то в цикле обрабатывается этот вариант.
Программа Ar_06.zip - исходники для компиляции и сборки.
Эта консольная программа откомпилирована и выполнена в 6-й версии
программы Microsoft Visual C++
Это видоизмененная предыдущая программа. В тексте файла выискивается слово, допустим "Алексей Васильевич" fileFrom.txt и везде к этому слову программа добавит прилагательное допустим " Уважаемый ". Обе строки заданы программным способом.
В этой программе хорошо то, что при вставке слова " Уважаемый " не теряется общее форматирование текста - то, которое было в исходном файле.
Это утилита для программиста. Достаточно программным способом изменить оба слова, затем откомпилировать и программа делает то, что вам нужно. Отыскивает в текстовом файле слово или строку, и вставляет перед ним новое слово или строку.
----------------------
Дело в том, что у меня появились определенные сложности с входными потоками при написании программы, в которой требуемые строки можно было бы вводить с клавиатуры. Как только эти проблемы будут решены, то эти две программы могут стать интерактивными.
Программа Ar_04_25_07.zip
- исходники для компиляции и сборки.
Программа Ar_04_25_07a.zip
-экзешник и три текстовых файла.
Эта консольная программа откомпилирована и выполнена в 6-й версии программы Microsoft Visual C++
Если в текстовом файле забыли проставить пробелы после запятых и др знаков препинания. То программа ставит пропущенные пробелы. Текст, который нужно обработать вставляется в файл fileFrom.txt Результирующий текст, с правильно проставленными пробелами после знаков препинания будет находиться в файле fileTo.txt Экзешник и текстовые файлы должны находиться в одной директории.
Эта программа ставит пробелы после следующих знаков препинания: string str =".,:;!?";
Программа правильно ведет себя с открывающими и закрывающими кавычками. Открывающие и закрывающие кавычки обязательно должны быть в паре. Иначе (при нечетном числе кавычек) программа может сбиться и расставлять пробелы для кавычек не правильно.