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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
04.09.2010, 18:08     Поиск строки в файле и её перезапись #1
Здравствуйте, я хочу чтобы моя программа находила строку в файле config.cfg и перезаписывала её.
Начало строки никогда не меняется!Например:name "nickname" то,что в ковычках нужно чтобы перезаписывалось или можно объявить переменную char x; x=' " '; и с помощью её добавлять ковычки разница не большая главное чтобы работало пожалуйста помогите =) Нужно на c++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2010, 18:08     Поиск строки в файле и её перезапись
Посмотрите здесь:

C++ Поиск строки в файле
C++ Перезапись части информации в файле
Перезапись строк в файле C++
Поиск строки в файле C++
Поиск строки в файле по заданному слову C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
04.09.2010, 22:14     Поиск строки в файле и её перезапись #2
На, держи. Шоб на пять сдал, лоботряс.
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;
}
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
04.09.2010, 22:57  [ТС]     Поиск строки в файле и её перезапись #3
Цитата Сообщение от 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;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.09.2010, 23:26     Поиск строки в файле и её перезапись #4
Ну вцелом как-то так. НО... Хз пока что делать с перезаписью. Можно конечно читать в вектор строк и после замены писать в файл.

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;
}
Yandex
Объявления
05.09.2010, 23:26     Поиск строки в файле и её перезапись
Ответ Создать тему
Опции темы

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