Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
zaki_hat
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 9
1

Удаление символа перевода строки из самого конца файла

23.06.2015, 02:23. Просмотров 804. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
void SaveToFile()
{
    ofstream out;
    out.open("Directory.txt");
    Directory.Print(size, PrintEl, out);
    long pos = out.tellp();
    out.seekp(pos-1);
    out << "\0";
    out.close();
}
Доброго времени суток, наткнулся на проблему:
после записи базы в файл, я не могу считать её корректно из-за символа перевода строки, который пишется в самый конец файла
Пытаюсь его удалить сразу после записи базы
C++
1
2
3
long pos = out.tellp();
out.seekp(pos-1);
out << "\0";
Но ничего не выходит
Помогите пожалуйста
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2015, 02:23
Ответы с готовыми решениями:

Удаление строки из файла\либо удаление самого файла.
День добрый, вот функция(используемые переменные объявленны ранее): void...

Написать программу удаления из текстового файла символов перевода строки ‘\n’ и перевода каретки ‘\r’
Здравствуйте,помогите написать программу на подобии этой,только не подсчета,а...

Поиск символа с конца строки
Здравствуйте.. Как найти символ с конца строки ? Например : предложение -...

Скопировать с конца строки std::string четыре символа в другую строку
как функцией можно скопировать с конца строки 4 символа в другую? string a =...

Удаление знака из конца строки.
Здравствуйте, требуется ваша помощь. Есть программа, которая считывает...

6
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
23.06.2015, 03:10 2
Цитата Сообщение от zaki_hat Посмотреть сообщение
Но ничего не выходит
Помогите пожалуйста
Туда не ноль записывать надо а просто обрезать файл. Сомнительно правдо чтобы эта редиска под названием stl это умела. Если файл текстовый попробуй не 0 а EOF записать (0x27).
1
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
23.06.2015, 03:31 3
Цитата Сообщение от zaki_hat Посмотреть сообщение
после записи базы в файл, я не могу считать её корректно из-за символа перевода строки, который пишется в самый конец файла
Покажи, как и что пишешь, как читаешь.

Добавлено через 1 минуту
Цитата Сообщение от zaki_hat Посмотреть сообщение
Пытаюсь его удалить сразу после записи базы
В этом смысла нет.

Добавлено через 8 минут
Обычно, проблемы с последним чтением и '\n', решаются помещением чтения первого поля класса в параметры while()(если, конечно, текстовые методы чтения используются).
1
zaki_hat
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 9
23.06.2015, 03:46  [ТС] 4
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
попробуй не 0 а EOF записать (0x27).
Не помогает


Цитата Сообщение от lss Посмотреть сообщение
Покажи, как и что пишешь, как читаешь.
Тут много кода, ни разу не встречал столько на форуме и считаю не целесообразным его заливать
(Даже куски, в проекте всё связано)

Считываю вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void LoadFromFile()
{
    ifstream in;
    in.open("Directory.txt");
    int adress;
    while (!in.eof())
    {
        Inf *el = new Inf;
        in >> el->key;
        in >> el->name;
        in >> el->mas;
        in >> adress;
        Directory.Insert(el);
    } 
    in.close();
}
0
Fulcrum_013
1588 / 1071 / 124
Регистрация: 14.12.2014
Сообщений: 8,822
Завершенные тесты: 3
23.06.2015, 03:50 5
Считываю вот так
А записываешь как?
1
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
23.06.2015, 03:58 6
Лучший ответ Сообщение было отмечено zaki_hat как решение

Решение

Цитата Сообщение от zaki_hat Посмотреть сообщение
Считываю вот так
Вот так попробуй, обычно помогает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void LoadFromFile()
{
    ifstream in;
    in.open("Directory.txt");
    int adress;
    while (true)
    {
        Inf *el = new Inf;
        if (in >> el->key)
        {   
             in >> el->name;
             in >> el->mas;
             n >> adress;
             Directory.Insert(el);
        }
        else
        {
             delete el;
             break;
         }
    } 
    in.close();
}
1
zaki_hat
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 9
23.06.2015, 04:02  [ТС] 7
Цитата Сообщение от lss Посмотреть сообщение
Вот так попробуй, обычно помогает:
Да, отлично
Всё работает
Спасибо всем
0
23.06.2015, 04:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2015, 04:02

Удаление символа строки
Здравствуйте а есть такая функция которая удаляет из строки выбранный символ и...

Удаление символа из строки
Как удалить символ (скобку) в заданной символьной строке?

Удаление символа из строки
Подскажите пожалуйста где я затупил ) Программа уделяет нужный символ, но после...


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

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

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