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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Morfeus
9 / 9 / 1
Регистрация: 22.10.2010
Сообщений: 110
#1

Замена заданной текстовой строки - C++

05.11.2012, 17:34. Просмотров 368. Ответов 1
Метки нет (Все метки)

Замена заданной текстовой строки на указанную текстовую строку
в текстовых файлах заданного каталога

Необходимо написать программу в которой бы создавались каталоги (5 штук) и файлы(5 штук на каждый каталог с информацией) в них и пользователь мог бы выбирать нужный ему каталог.

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

И сохранять это все в тот же файл.

Проделывать подобное необходимо сразу со всеми файлами находящимися в каталоге выбранном пользователем


Собственно код данной программы...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    // Удаление директорий со всем содержимым, (если они были созданы ранее).
    system("if exist box1\\ rd /s /q box1\\");
    system("if exist box2\\ rd /s /q box2\\");
    system("if exist box3\\ rd /s /q box3\\");
    //===================================================================================
    CreateDirectory("box1",NULL);   
    CreateDirectory("box2",NULL);
    CreateDirectory("box3",NULL);
    //===================================================================================
    // Наполнение одной директории файлами.
    ofstream out1("box1\\test1.txt");out1<<"Замена заданной текстовой строки на указанную текстовую строку";out1.close();
    ofstream out2("box1\\test2.txt");out2<<"Замена заданной текстовой строки на указанную текстовую строку";out2.close();
    ofstream out3("box1\\test3.txt");out3<<"Замена заданной текстовой строки на указанную текстовую строку";out3.close();
 
    ofstream out4("box2\\test1.txt");out4<<"Замена заданной текстовой строки на указанную текстовую строку";out4.close();
    ofstream out5("box2\\test2.txt");out5<<"Замена заданной текстовой строки на указанную текстовую строку";out5.close();
    ofstream out6("box2\\test3.txt");out6<<"Замена заданной текстовой строки на указанную текстовую строку";out6.close();
 
    ofstream out7("box3\\test1.txt");out7<<"Замена заданной текстовой строки на указанную текстовую строку";out7.close();
    ofstream out8("box3\\test2.txt");out8<<"Замена заданной текстовой строки на указанную текстовую строку";out8.close();
    ofstream out9("box3\\test3.txt");out9<<"Замена заданной текстовой строки на указанную текстовую строку";out9.close();
    //===================================================================================
    system("setlocal EnableDelayedExpansion ");
    string prm_1; // Переменная для параметра.
    string prm_2; // Переменная для параметра.
    string prm_3; // Переменная для параметра.
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "Введите строку для изменения:\t";
    getline(cin, prm_1);
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "Введите строку заменяющую заданную:\t";
    getline(cin, prm_2);
    cout << "-------------------------------------------------------------------------------" << endl;
    cout << "Введите имя директории:\t";
    getline(cin, prm_3);
    cout << "-------------------------------------------------------------------------------" << endl;
    string cmd_str1 = "for /f delims= %s in (.\\"; // Команда (+ путь).
    cmd_str1+=prm_3 + "\\test1.txt) do (\n" + "set string=%s\n" + "echo !string:" + prm_1 + "=" + prm_2 + "!>>temp.tmp\n" + ")"; 
    cout<<cmd_str1<<endl;
    system(cmd_str1.c_str());
    cout << "-------------------------------------------------------------------------------" << endl;  
    //===================================================================================
    string cmd_str2 = "copy temp.tmp .\\"; // Команда (+ путь).
    cmd_str2+=prm_3 + "\\test1.txt";
    system(cmd_str2.c_str());
    string cmd_str3 = "copy temp.tmp .\\"; // Команда (+ путь).
    cmd_str3+=prm_3 + "\\test2.txt";
    system(cmd_str3.c_str());
    string cmd_str4 = "copy temp.tmp .\\"; // Команда (+ путь).
    cmd_str4+=prm_3 + "\\test3.txt";
    system(cmd_str4.c_str());
    //===================================================================================
    system("pause");
}

проблема заключается в том, что делаю все через system(); и не имею понятия как правильно записать данную строку туда (допустим для файла test1.txt)
Bash
1
2
3
4
5
for /f "delims=" %%s in (.\%3\test1.txt) do ( 
set string=%%s  
echo !string:%1=%2!>>temp.tmp 
) 
move temp.tmp .\%3\test1.txt
Может кто то помочь алгоритмом там или другим (любым) вариантом решения проблемы ???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 17:34     Замена заданной текстовой строки
Посмотрите здесь:

Написать функцию для определения количества цифровых символов в заданной текстовой строке - C++
Написать процедуру/функцию на языке программирования для определения количества цифровых символов в заданнойтекстовой...

Обработка текстовой строки - C++
Собственно задание определить, имеются ли в строке изображения двоичных чисел. написал данную прогу. #include &quot;stdafx.h&quot; #include...

Разбиение текстовой строки - C++
Не могу вызвать функцию strtok(); Вот код: int main(){ char *value, *V; int month, day; cin &gt;&gt; value; ...

Ввод текстовой строки с клавиатуры - C++
Дана фраза, в которой слова разделены пробелом, а сама фраза заканчивается точкой. Опредлить, имеются ли в ней симметричные пятибуквенные...

Ошибка анализа текстовой строки - C++
char stroka; int D; char alf={'a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t'}; int...

Вычисления по данным текстовой строки - C++
дано массив...надо выполнять математические действия в массиве,,,я нашел индексы действий,числа левой и правой стороны действий...

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

Объявление констант и перенос текстовой строки в коде - C++
Здравствуйте! 1) Почему постоянное значение MAX_TABLE нельзя объявить как int MAX_TABLE=15? 2) Как перенести текст в коде программы...

Удалить каждое четное слово из текстовой строки - C++
СТРОКИ: Удалить каждое четное слово из строки.

Описать класс,содержащий переменную для хранения текстовой строки. - C++
Описать класс,содержащий переменную для хранения текстовой строки.Вне класса притв функцию,которая определит какое слово встречается в...

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

Заменить значения всех элементов заданной строки матрицы числами заданной последовательности - C++
Дан двумерный массив (MxN). Составить программу, которая заменяет значения всех элементов некоторой строки массива числами заданной...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dragokas
Эксперт WindowsАвтор FAQ
15771 / 6619 / 796
Регистрация: 25.12.2011
Сообщений: 10,236
Записей в блоге: 16
15.11.2012, 20:50     Замена заданной текстовой строки #2
На плюсах есть же свои функции для файловых операций.

Цитата Сообщение от Morfeus Посмотреть сообщение
system("setlocal EnableDelayedExpansion ");


Цитата Сообщение от Morfeus Посмотреть сообщение
как правильно записать данную строку туда
Ну если так хочется:

C++
1
2
3
4
5
6
7
8
9
10
11
12
    string cmdline, cmdline2;
    string p1 = "A"; //%1 - Str From
    string p2 = "B"; //%2 - Str To
    string p3 = "papka"; //%3
    
    cmdline = "cmd /v:on /c (for /f \"delims=\" %%s in (.\\" + p3 + "\\test1.txt) do (set string=%%s& echo !string:" + p1 + "=" + p2 + "!>>temp.tmp))";
 
    system (cmdline.c_str());
 
    cmdline2 = "move temp.tmp .\\" + p3 + "\\test1.txt";
 
    system (cmdline2.c_str());
Ответ Создать тему
Опции темы

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