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

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

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

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

23.05.2010, 01:55. Просмотров 2060. Ответов 5
Метки нет (Все метки)

Имеется файл формата

аа
бб
вв
гг
дд

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

удаление строк из файла - C++
Здравствуйте, помогите с задачкой.(программа многомодульная) *при покупке билета пассажир регистрируется в базе данных(Информация о...

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

Удаление чётных строк из файла - C++
есть txt Документ из него нужно удалить каждую 2-ю строку,как это сделать!? гуглю целый день,варианты нашол но не на c++ =(

Совмещение строк, удаление файла. - C++
нужно объединить 2 строки,содержащие путь к директории и имя файла , затем по результату объединения удалить файл StringCbCatNA...

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

Удаление из строк - C++
В символьной строке удалить все слова состоящие из нечётного количества букв.

5
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
23.05.2010, 03:15 #2
как вариант, можно завести временный файл, читать по строке из исходного, сравнивать с введённой, если не совпадает - писать во временный. После чего исходный файл удалить, а временный в него переименовать. Вот в принципе похожий алгоритм http://www.cyberforum.ru/cpp-beginne...tml#post745729, немного переделать, и всё будет...
1
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;
}
Если не сложно скажите недочеты. На деле работает, но малоли я чтото нетак всетаки сделал
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
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");
1
staaas1k
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 96
23.05.2010, 03:32  [ТС] #5
Строка такая короткая, потому что в каждой строке по 1 слову содержится.
Нет всетаки нужно мне строки убирать, чтобы пробелов не остовалось, это я не правильно уже сформулировал.
До класса string на учебе пока не добрались, а какие плюсы?

Насчет rename, спасибо большое, не знал такой функции
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
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;
}
1
23.05.2010, 03:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2010, 03:53
Привет! Вот еще темы с ответами:

Удаление строк - C++
Есть код программы, она удаляет все числа между первым максимальным и последним минимальным числом. Проблема в том, что она удаляет еще...

Удаление из строк - C++
Удаление из строк всех букв со сжатием строк ( остаются цифры и символы) PS Дано: 2 строки по 80 символов.

Матрицы. Удаление строк. - C++
Помогите решить задачку Описать процедуру RemoveRows(A, M, N, K1, K2), удаляющую из вещественной матрицы A размера M × N строки с...

Удаление последних строк. - C++
Есть файл, содержащий неизвестное количество строк. как удалить 3 последние из них?


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

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

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