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

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

Восстановить пароль Регистрация
 
Morfeus
9 / 9 / 1
Регистрация: 22.10.2010
Сообщений: 110
05.11.2012, 17:34     Замена заданной текстовой строки #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++ Описать класс,содержащий переменную для хранения текстовой строки.
C++ Обработка текстовой строки
составить процедуру в результате которой из первой заданной строки будет удалятся каждый символ принадлежащий и второй заданной строке C++
Строка: Выбрать из текстовой строки все слова, входящие в данный набор и вывести их на печать C++
Вычисления по данным текстовой строки C++
C++ Удалить каждое четное слово из текстовой строки
Написать функцию для определения количества цифровых символов в заданной текстовой строке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dragokas
Автор FAQ
 Аватар для Dragokas
14509 / 6336 / 782
Регистрация: 25.12.2011
Сообщений: 9,862
Записей в блоге: 14
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());
Yandex
Объявления
15.11.2012, 20:50     Замена заданной текстовой строки
Ответ Создать тему
Опции темы

Текущее время: 17:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru