175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,318
1

Удалить последнюю строку в файле (или сохранить файл без них)

26.01.2015, 10:28. Показов 4094. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Читаю текстовое поле чужого приложения, заношу содержимое в файл, из файла читаю последнюю строку.
Проблема в том, что в конец файла сохраняется 2 пустые строки. \
Вопрос: Как удалить последние 2 строки в файле или сохранять файл без 2х последних строк или как удалить пустые строки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Directory::CreateDirectory("D:\\Новая папка\\"); //создать папку 
        HWND Handle1 = FindWindow(L"Notepad", nullptr); //находим окно прошивок pr_adsp
        HWND Handle2 = FindWindowEx(Handle1, nullptr, L"Edit", nullptr); //находим окно прошивок TPanel
 
        //массив 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
        TCHAR display[32768]; //создаем массив
        SendMessage(Handle2, WM_GETTEXT, 32768, (LPARAM)display); //заносим в массив содержимое окна
        String^ str = gcnew String(display); //заносим в строку содержимое массива
 
        StreamWriter^ sw = gcnew StreamWriter("D:\\Новая папка\\test.txt"); //сохранение файла в указанную дирректорию
        sw->WriteLine(str); //заносим содержимое строки в файл
        sw->Close(); //закрыть поток работы с файлом
        
        last_line("D:\\Новая папка\\test.txt"); //вызов функции чтения из файла
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
/* ФУНКЦИЯ: Чтение последней строки */  
    std::string& last_line(const std::string& filename)
    {
        std::ifstream inp(filename.c_str());
        if (!inp.is_open()) throw std::exception();
        std::string str = "";
        std::string buf;
        while (std::getline(inp, buf, '\n')) str = buf;
 
        /*  //Если кодировка программы ASCII
        char *tmp = new char[str.size() + 1];
        OemToCharA(str.c_str(), tmp);  //(!!!)
        str = tmp;
        */
 
        String^ str2 = gcnew String(str.c_str());
        textBox1->Text = str2;
        if (str2 == "ололо")
        {
            textBox1->Text = "ok";
        }
                
        return str;
    }
Добавлено через 1 час 48 минут
Решил задачу так:
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
/* ФУНКЦИЯ: Удаление строк */
    bool remove_line(const char *filename, size_t index)
    {
        std::vector<std::string> vec;
        std::ifstream file(filename);
        if (file.is_open())
        {
            std::string str;
            while (std::getline(file, str))
                vec.push_back(str);
            file.close();
            if (vec.size() < index)
                return false;
            vec.erase(vec.begin() + index);
            std::ofstream outfile(filename);
            if (outfile.is_open())
            {
                std::copy(vec.begin(), vec.end(),
                    std::ostream_iterator<std::string>(outfile, "\n"));
                outfile.close();
                return true;
            }
            return false;
        }
        return false;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const char * filename = "D:\\Новая папка\\test.txt";
        ifstream file_in;
        file_in.open(filename);
        //---подсчет количества строк в файле-----------------------------------
        std::string s;
        int i = 0; //---количество строк
        while (file_in.peek() != EOF)
        {
            getline(file_in, s);
            i++;
        }
        //----------------------------------------------------------------------
        file_in.close();
        
            for (int j = (i-1); (i - j) < 2; j--)
            {
                remove_line("D:\\Новая папка\\test.txt", j); //удаление 2х последних строк
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2015, 10:28
Ответы с готовыми решениями:

В текстовом файле удалить последнюю строку результат записать в другой файл
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt;...

Даны два файла. Скопировать второй файл в начало первого. Удалить первую и последнюю строку во втором файле
Вот файл, но здесь не надо использовать readlines -тоесть сделать не применяя строк, дофига чего...

Удалить последнюю пустую строку в текстовом файле
Здравствуйте. Искал очень долго решение, но ничего не нашел и сделать не вышло. Есть файл .txt...

Текстовый файл: Удалить из него последнюю строку
Дан текстовый файл, созданный заранее в редакторе Блокнот. Удалить из него последнюю строку.

1
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
26.01.2015, 11:22 2
Цитата Сообщение от Nalik Посмотреть сообщение
Как удалить последние 2 строки в файле или сохранять файл без 2х последних строк
Все просто. Находишь их в буфере, который у тебя уже есть и записываешь в файл буфер, без них. Функции поиска подстрок в строке тебе в помощь. Либо ручками циклом с конца буфера. Размер считанных данных у тебя есть.
0
26.01.2015, 11:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2015, 11:22
Помогаю со студенческими работами здесь

Имеется текстовый файл. Удалить из него последнюю строку
Имеется текстовый файл. Удалить из него последнюю строку. Результат записать в другой файл.

Имеется текстовый файл.Нужно удалить из него последнюю строку
Помогите пожалуйста))Задача на файлы: Имеется текстовый файл.Нужно удалить из него последнюю...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru