Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330

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

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

Студворк — интернет-сервис помощи студентам
Читаю текстовое поле чужого приложения, заношу содержимое в файл, из файла читаю последнюю строку.
Проблема в том, что в конец файла сохраняется 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2015, 10:28
Ответы с готовыми решениями:

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

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

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

1
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
26.01.2015, 11:22
Цитата Сообщение от Nalik Посмотреть сообщение
Как удалить последние 2 строки в файле или сохранять файл без 2х последних строк
Все просто. Находишь их в буфере, который у тебя уже есть и записываешь в файл буфер, без них. Функции поиска подстрок в строке тебе в помощь. Либо ручками циклом с конца буфера. Размер считанных данных у тебя есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2015, 11:22
Помогаю со студенческими работами здесь

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru