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

Удаление нужной строчки из файла - C++

Восстановить пароль Регистрация
 
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 91
27.02.2013, 14:59     Удаление нужной строчки из файла #1
Здравствуйте.
Подскажите пожалуйста, как удалить нужную строчку из файла?

Строчка является ключом.

Например:
Содержание файла:

line1=4
line2=1
line3=5

Нужно найти line2 удалить;

Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mysterion777
 Аватар для Mysterion777
-74 / 48 / 2
Регистрация: 11.01.2013
Сообщений: 199
27.02.2013, 15:15     Удаление нужной строчки из файла #2
//создает новый файл output.txt в котором нет такой строки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
 
int main()
{
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    string s;
    while(cin>>s)
    {
     if(s=="line2=2"){}
     else
     cout<<s<<endl;             
                }
    return 0;
}
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 91
27.02.2013, 15:23  [ТС]     Удаление нужной строчки из файла #3
Нет, нужно удалить строчку по ключу line2, а = не трогать и перезаписать в этот же файл.
Mysterion777
 Аватар для Mysterion777
-74 / 48 / 2
Регистрация: 11.01.2013
Сообщений: 199
27.02.2013, 15:44     Удаление нужной строчки из файла #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
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
 
int main()
{FILE *f;
f=fopen("input.txt", "r");
    
//  freopen("output.txt", "w", stdout);
    char s[100][100];int i=0;
    while(fgets(s[i],100,f))
    i++;
    fclose(f);
    f=fopen("input.txt", "w");
    for(int j=0;j<i;j++){
 if(s[j][0]=='l'&&s[j][1]=='i'&&s[j][2]=='n'&&s[j][3]=='e'&&s[j][4]=='2'){}
 else
 fputs(s[j],f);    
}
            
                
    return 0;
}
ключ в каком формате? и есть ли пробел перед =?
или просто нужно удалить i-ую строчку где i задается с клавиатуры?
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 91
28.02.2013, 07:23  [ТС]     Удаление нужной строчки из файла #5
Нету пробела перед =, просто, допустим вводишь текст, и проверяешь, есть ли такой ключ (ключ должен совпадать с введенным текстом), и удаляешь его.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 07:33     Удаление нужной строчки из файла #6
Цитата Сообщение от Slava_ Посмотреть сообщение
и удаляешь его.
Его кого? Ключ в файле? Строку в файле, в которой есть этот ключ? Часть строки в файле равную ключу? И что куда перезаписать? На примере объясните. Например, в файле то-то, вводится с клавиатуры то-то, после работы кода в файле должно быть то-то.
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 91
28.02.2013, 08:32  [ТС]     Удаление нужной строчки из файла #7
Есть ключ со значением: line2=3, при вводе с клавиатуры текста идет чтение файла и проверка: совпадает ли введенный текст с самим КЛЮЧОМ, если текст совпадает, то удаляется вся строчка, т.е. этот ключ и его значение. Потом все оставшееся перезаписывается обратно в этот же файл, уже без этой строчки.

Весь смысл в том, что нужно просто удалить нужную строчку из файла, ориентируясь на ключ и все.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 09:01     Удаление нужной строчки из файла
Еще ссылки по теме:

C++ Считывание из файла в нужной кодировке
C++ Удаление подстрочки из строчки
C++ Как начать чтение файла сначала после Getline с первой строчки в fstream?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 09:01     Удаление нужной строчки из файла #8
Вся строка в файле состоит из одного ключа? Т.е., с клавиатуры вводится строка, потом идёт поиск в файле такой строки, если найдена, то файл переписывается уже без этой строки?

Добавлено через 15 минут
Если так, то:
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
 
int main()
{
   fstream f("text.txt");
   if (!f.is_open()) cout << "Error!" << endl;
   else
   {
       vector <string> vecstr;
       string str;
       string temp;
   
       cin >> str;
   
       while (!f.eof())
       {
            getline(f, temp);
            if (temp != str)
                vecstr.push_back(temp);
       }
 
       f.close();
   
       f.open("text.txt", ios::out);
 
       for (int i = 0; i < vecstr.size(); i++)
            f << vecstr[i] << '\n';
 
       f.close();
   }
 
   system("pause");
   return 0;
}
Если же введённый ключ - это часть строки в файле, то:
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
 
int main()
{
   fstream f("text.txt");
   if (!f.is_open()) cout << "Error!" << endl;
   else
   {
       vector <string> vecstr;
       string str;
       string temp;
   
       cin >> str;
   
       while (!f.eof())
       {
            getline(f, temp);
            if (temp.find(str) == -1)
                vecstr.push_back(temp);
       }
 
       f.close();
   
       f.open("text.txt", ios::out);
 
       for (int i = 0; i < vecstr.size(); i++)
            f << vecstr[i] << '\n';
 
       f.close();
   }
 
   system("pause");
   return 0;
}
Yandex
Объявления
28.02.2013, 09:01     Удаление нужной строчки из файла
Ответ Создать тему
Опции темы

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