Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
#1

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

27.02.2013, 14:59. Просмотров 472. Ответов 7
Метки нет (Все метки)

Здравствуйте.
Подскажите пожалуйста, как удалить нужную строчку из файла?

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

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

line1=4
line2=1
line3=5

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

Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 14:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление нужной строчки из файла (C++):

Удаления нужной строчки из файла - C++
Доброе время суток ! Мне понадобилась функция, которая по двум параметрам (1ый и 2ой символ строчки ) находит нужную строчку и удаляет ее ....

Удаление подстрочки из строчки - C++
Здарова, мужики! Я делаю следующее задание: Нужно определить количество вхождений подстрочки в строчку и удалить все вхождения. Я...

Удаление нулевой(-ых) строчки и столбца из матрицы - C++
Доброго времени суток! Помогите написать программу, которая проверяла бы матрицу на нулевую строчку и столбец, и, если таковые...

Запись в файл. удаление последней строчки - C++
Записываю файл вектор построчно: myFile_tarif.open("Tarif.txt",std::ios_base::out | std::ios_base::trunc); if...

Считывание из файла в нужной кодировке - C++
Почему при считывание файла выдает кракозябры ? Содержимое файла: char *text; ifstream read; read.open("read.txt"); ...

Удаление строки из файла\либо удаление самого файла. - C++
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE *fout; open_file("abase.dat"); ...

7
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;
}
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
27.02.2013, 15:23  [ТС] #3
Нет, нужно удалить строчку по ключу line2, а = не трогать и перезаписать в этот же файл.
0
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 задается с клавиатуры?
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
28.02.2013, 07:23  [ТС] #5
Нету пробела перед =, просто, допустим вводишь текст, и проверяешь, есть ли такой ключ (ключ должен совпадать с введенным текстом), и удаляешь его.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 07:33 #6
Цитата Сообщение от Slava_ Посмотреть сообщение
и удаляешь его.
Его кого? Ключ в файле? Строку в файле, в которой есть этот ключ? Часть строки в файле равную ключу? И что куда перезаписать? На примере объясните. Например, в файле то-то, вводится с клавиатуры то-то, после работы кода в файле должно быть то-то.
1
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
28.02.2013, 08:32  [ТС] #7
Есть ключ со значением: line2=3, при вводе с клавиатуры текста идет чтение файла и проверка: совпадает ли введенный текст с самим КЛЮЧОМ, если текст совпадает, то удаляется вся строчка, т.е. этот ключ и его значение. Потом все оставшееся перезаписывается обратно в этот же файл, уже без этой строчки.

Весь смысл в том, что нужно просто удалить нужную строчку из файла, ориентируясь на ключ и все.
0
alsav22
5426 / 4821 / 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;
}
1
28.02.2013, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 09:01
Привет! Вот еще темы с ответами:

добавление строчки в самое начало файла - C++
Как программно добавить строчку в самое начало файла?

Ввести адрес файла и разобрать его на части(строчки с++) - C++
Помогите,пожалуйста,решить следующую задачу. Ввести адресс файла и разобрать его на части розделённые знаком &quot;/&quot;. Каждую часть вывести в...

Удалить из файла строчки содержащие несколько самых длинных слов - C++
Подскажите как это можно сделать.

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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