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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
staaas1k
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 96
23.05.2010, 01:55     Удаление строк из файла #1
Имеется файл формата

аа
бб
вв
гг
дд

Как удалить введенную с клавиатуры строку? Только чтоб не оставалось пробелов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 01:55     Удаление строк из файла
Посмотрите здесь:

C++ удаление строк из файла
Удаление строки из файла\либо удаление самого файла. C++
Удаление из строк C++
Совмещение строк, удаление файла. C++
Удаление из строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.05.2010, 03:15     Удаление строк из файла #2
как вариант, можно завести временный файл, читать по строке из исходного, сравнивать с введённой, если не совпадает - писать во временный. После чего исходный файл удалить, а временный в него переименовать. Вот в принципе похожий алгоритм http://www.cyberforum.ru/cpp-beginne...tml#post745729, немного переделать, и всё будет...
staaas1k
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 96
23.05.2010, 03:17  [ТС]     Удаление строк из файла #3
Пока ответили сделал...

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
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<fstream.h>
 
#define STRLEN 36
#define PATH "test.txt"
 
int main()
 
{
   ifstream   in("test2.txt");
   ofstream   out("dest.txt");
 
   const int len = STRLEN;
   char   line[len],*word;
 
   cout << "Введите слово";
   cin >> word;
 
   while (!in.eof())
    {
      in.getline(line,len);
    if   (strcmp(line, word) != 0)
     {
       out << line << endl;
     }
 
     }
 
   remove("test2.txt");
 
   ifstream  in2("dest.txt");
   ofstream  out2("test2.txt");
 
   while(!in2.eof())
    {
     in2.getline(line,len);
     out2 << line << endl;
    }
 
   remove("dest.txt");
   cout << "Слово успешно удалено";
   return   0;
}
Если не сложно скажите недочеты. На деле работает, но малоли я чтото нетак всетаки сделал
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.05.2010, 03:28     Удаление строк из файла #4
Цитата Сообщение от staaas1k Посмотреть сообщение
Если не сложно скажите недочеты.
1. Это какая-то дикая смесь из С и С++
2.
Цитата Сообщение от staaas1k Посмотреть сообщение
#define STRLEN 36
Коротенькая какая-то строчка... Это хорошо, когда больше двух символов лень писать
Да и вообще, чем Вам класс string не угодил?
3.
Цитата Сообщение от staaas1k Посмотреть сообщение
C++
1
2
cout << "Введите слово"; 
cin >> word;
Вы таки определитесь - строки из файла убирать, или слова?
4.
Цитата Сообщение от staaas1k Посмотреть сообщение
C++
1
2
3
while (!in.eof()) 
{ 
in.getline(line,len);
Уж много раз про это говорил. Если последняя строка не совпадает с искомой, она в выходном файле продублируется.
5.
вместо всего вот этого
Цитата Сообщение от staaas1k Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
   ifstream  in2("dest.txt");
   ofstream  out2("test2.txt");
 
   while(!in2.eof())
    {
     in2.getline(line,len);
     out2 << line << endl;
    }
 
   remove("dest.txt");
достаточно написать
C++
1
rename("dest.txt", "test2.txt");
staaas1k
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 96
23.05.2010, 03:32  [ТС]     Удаление строк из файла #5
Строка такая короткая, потому что в каждой строке по 1 слову содержится.
Нет всетаки нужно мне строки убирать, чтобы пробелов не остовалось, это я не правильно уже сформулировал.
До класса string на учебе пока не добрались, а какие плюсы?

Насчет rename, спасибо большое, не знал такой функции
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.05.2010, 03:53     Удаление строк из файла #6
staaas1k, вот Вам на С++ програмка, удивите препода...
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main(){
    char *file_name = "text.txt";
    std::string buf, rem;
    std::vector<std::string> vec;
 
    std::cout << "String to remove: ";
    std::getline(std::cin, rem);
 
    std::ifstream ifs(file_name);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open file for read!" << std::endl;
        return 1;
    }
    while ( std::getline(ifs, buf) )
        if ( buf != rem )
            vec.push_back(buf);
    ifs.close();
 
    std::ofstream ofs(file_name);
    if ( ! ofs.is_open() ){
        std::cerr << "Can't open file for write!" << std::endl;
        return 1;
    }
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(ofs, "\n"));
    ofs.close();
 
    std::cout << "Ales apgemaht!" << std::endl;
    return 0;
}
Yandex
Объявления
23.05.2010, 03:53     Удаление строк из файла
Ответ Создать тему
Опции темы

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