Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51

Поиск строки в файле и её перезапись

04.09.2010, 18:08. Показов 6920. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я хочу чтобы моя программа находила строку в файле config.cfg и перезаписывала её.
Начало строки никогда не меняется!Например:name "nickname" то,что в ковычках нужно чтобы перезаписывалось или можно объявить переменную char x; x=' " '; и с помощью её добавлять ковычки разница не большая главное чтобы работало пожалуйста помогите =) Нужно на c++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.09.2010, 18:08
Ответы с готовыми решениями:

Перезапись строки в файле
Приветствую всех! Тут возникла необходимость перезаписать единственную строку в файле. 1. Прочитать файл; 2. Найти искомую...

перезапись строки в файле
Здравствуйте! Такая задумка: в таймере записывается строка в файл(StreamWriter,sw.write("dsfs");, файл .txt), но надо при...

Поиск слова в текстовом файле. Перезапись в новый файл по правилу
Приветствую. Ни как не могу решить кое какую задачку. Надеюсь на вашу помошь. Задача. Сделать программку которая открывает файл...

3
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
04.09.2010, 22:14
На, держи. Шоб на пять сдал, лоботряс.
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdexcept>
#include <boost/regex.hpp>
#include <boost/filesystem.hpp>
 
using namespace std;
using namespace boost;
using namespace boost::filesystem;
 
void search_replace( string const & file_name
                   , string const & temp_file
                   , char const * srch
                   , char const * repl)
{
    ifstream in(file_name.c_str());
    in.exceptions(ios::badbit);
 
    ofstream out(temp_file.c_str());
    out.exceptions(ios::badbit);
 
    regex rx(srch);
    string fmt(repl);
 
    string line;
    while (getline(in, line))
    {
        string repl_line(regex_replace(line, rx, fmt));
        out << repl_line << endl;
    }
}
 
void replace_file(string const & dst, string const & src)
{
    remove(dst);
    rename(src, dst);
}
 
int main(int argc, char * argv[])
try
{
    if (argc != 4)
    {
        cerr << "options: 'file-name' 'search-pattern' 'replace-string'\n";
        return -1;
    }
 
    string file_name(argv[1]);
    string temp_file(file_name);
    temp_file += ".temp";
 
    search_replace(file_name, temp_file, argv[2], argv[3]);
    replace_file(file_name, temp_file);
}
catch (std::exception & e)
{
    cerr << "error: " << e.what() << endl;
    return -2;
}
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
04.09.2010, 22:57  [ТС]
Цитата Сообщение от alexzak Посмотреть сообщение
На, держи. Шоб на пять сдал, лоботряс.
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdexcept>
#include <boost/regex.hpp>
#include <boost/filesystem.hpp>
 
using namespace std;
using namespace boost;
using namespace boost::filesystem;
 
void search_replace( string const & file_name
                   , string const & temp_file
                   , char const * srch
                   , char const * repl)
{
    ifstream in(file_name.c_str());
    in.exceptions(ios::badbit);
 
    ofstream out(temp_file.c_str());
    out.exceptions(ios::badbit);
 
    regex rx(srch);
    string fmt(repl);
 
    string line;
    while (getline(in, line))
    {
        string repl_line(regex_replace(line, rx, fmt));
        out << repl_line << endl;
    }
}
 
void replace_file(string const & dst, string const & src)
{
    remove(dst);
    rename(src, dst);
}
 
int main(int argc, char * argv[])
try
{
    if (argc != 4)
    {
        cerr << "options: 'file-name' 'search-pattern' 'replace-string'\n";
        return -1;
    }
 
    string file_name(argv[1]);
    string temp_file(file_name);
    temp_file += ".temp";
 
    search_replace(file_name, temp_file, argv[2], argv[3]);
    replace_file(file_name, temp_file);
}
catch (std::exception & e)
{
    cerr << "error: " << e.what() << endl;
    return -2;
}
ахах вы меня извените но я ничего не сдаю, я просто пишу свою программу и пытаюсь разобратся с функцией, но все равно спасибо

Добавлено через 1 минуту
это слишком заумно,а можно что нибудь попроще с вот этим там уже все есть осталось только запись в строку вставить ^^
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
#include "stdafx.h"
#include "iostream"
#include "string"
#include "fstream"
#include "conio.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    string s,nickname="fff",n1,n2,n3;
    char x;
    x='"';
    setlocale(LC_ALL,"rus");
     ifstream f("nickname.cfg");
     string str,port;
     while( !f.eof() ) // повторяем, пока не достигнем конца файла
             {
                     f >> str;  // ищем слово "name"
                     if(str == "name") if( !f.eof() )
                     {f >> port; // читаем следующее слово в переменную port ( в int преобразуется автоматически оператором >> )
                           break; // выходим из цикла
                     }
             
             f.close(); // закрываем
             cout<<port;
return 0;}
Добавлено через 34 минуты
как вот в это добавить чтобы после, name "Тут ник" перезаписывался бесконечно ник
{
cout<<atoi(str+5);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
#include <fstream>
 
using namespace std;
int main()
{
ifstream fin("D:\\input.txt");
char str[40]="";
int n;
while(!fin.eof())
{
fin.getline(str,39);
if(!strncmp(str,"name",4))
{
cout<<atoi(str+5);
break;
}
}
return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.09.2010, 23:26
Ну вцелом как-то так. НО... Хз пока что делать с перезаписью. Можно конечно читать в вектор строк и после замены писать в файл.

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
#include <algorithm>
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
int main()
{
   ifstream fin("input.txt");
   std::string str;
   std::string DelStr="name";
   std::string lalala="nickname";
   std::ofstream ofs("input.txt", ios.ate|ios.app);
   while(!fin.eof())
   {
      std::getline(fin, str);
      std::string::iterator It;
      It=std::find_end(str.begin(), str.end(), DelStr.begin(), DelStr.end());
      if(It!=str.end())
      {
         str.replace(It+5, str.end(), lalala.begin(), lalala.end());
         std::cout<<str<<'\n';
         ofs<<str<<'\n';
      }
   }
   ofs.close();
   fin.close();
   return 0;
}
Добавлено через 11 минут
Как-то вот так то есть.

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
#include <algorithm>
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
 
using namespace std;
int main()
{
   ifstream fin("input.txt");
   std::string str;
   std::string DelStr="name";
   std::string lalala="nickname";
   std::vector<std::string> VecStr;
   while(!fin.eof())
   {
      std::getline(fin, str);
      VecStr.push_back(str);
   }
   std::ofstream ofs("input.txt");
   for(int i=0; i!=VecStr.size(); ++i)
   {
      std::string::iterator It;
      It=std::find_end(VecStr[i].begin(), VecStr[i].end(), DelStr.begin(), DelStr.end());
      if(It!=VecStr[i].end())
      {
         VecStr[i].replace(It+5, VecStr[i].end(), lalala.begin(), lalala.end());
         std::cout<<VecStr[i]<<'\n';
         ofs<<VecStr[i]<<'\n';
      }
   }
   ofs.close();
   fin.close();
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2010, 23:26
Помогаю со студенческими работами здесь

Перезапись в файле определенной по счету строки
Простите, что туплю, но не могу сообразить. Есть файл с некоторым количеством строк, известным заранее. В зависимости от условий, нужно...

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

Поиск в файле нужной строки и использование строки, находящейся рядом
Попробую объяснить, как можно, проще. Если что непонятно, напишите. Есть файл base.txt. В нем хранятся строки в формате: ...

Поиск по заданному выражению строки в файле и удаление найденной строки и нескольких прилежащих к ней строк
Доброго времени суток! Помогите, пожалуйста, разобраться. У меня лог файл, из которого мне нужно найти строки, в которых содержится...

Перезапись байтов в файле
Всем привет! Вопрос возможно к гуру. Подскажите как поменять в бинарном файле байт (или группу байтов) по определенному адресу? ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru