Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 72
1

Запись и считывание из файла

31.05.2017, 08:32. Показов 960. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал 2 метода, один из них запись в файл, а другой соответственно считывание из него.
Как модифицировать код записи так, чтобы он в файл записал так же как я написал в консоле, ну или избежать записи в одну длинную строку, а делал хотя бы иногда переходы на новую строку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Document::write() { /// Реализация метода записи в файл
    std::cout << "Какую информацию запишем в файл?" << std::endl;
    ofstream unit_1;
    unit_1.open("Information.txt", std::ios::binary | std::ios::app);
 
    std::cout << "Завершающий символ ввода - > '#'" << std::endl;
    cin.get(first_string, 512, '#');
    system("cls");
    std::cout << "Вы ввели следующие строки:\n" << first_string << std::endl;
 
    unit_1 << first_string;
 
    unit_1.close();
}
А при считывании я столкнулся с такой проблемой, что при считывании из файла, он выводит только первую строку предложения, которая заканчивается точкой.

Вот что я вводил:
Peter Piper picked a peck of pickled peppers.
A peck of pickled peppers Peter Piper picked.
If Peter Piper picked a peck of pickled peppers,
Where's the peck of pickled peppers Peter Piper picked?

А результат вывода показал мне:
Peter Piper picked a peck of pickled peppers.

Как сделать чтобы он считывал все?
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Document::read() { /// Реализация метода считывания с файла
    std::cout << "Работает метод считывания информации с файла." << std::endl;
    ifstream unit_2;
    unit_2.open("Information.txt", std::ios::out | std::ios::app);
    unit_2 >> first_string;
 
    std::cout << "------------------------------" << std::endl;
    unit_2.getline(first_string, 512);
    std::cout << first_string << std::endl;
 
    unit_2.close();
}
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2017, 08:32
Ответы с готовыми решениями:

Считывание файла в массив и запись нового файла
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и...

Запись и считывание в/из ФАЙЛА
Есть программа По вычислению СЛАУ методом Гаусса. Помогите сделать так, что бы можно было...

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

Запись и считывание из бинарного файла
Допустим я реализовываю АТД - контейнер. Там будет функция обновления (Все данные скопировать в...

5
Заблокирован
31.05.2017, 08:52 2
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
C++
1
std::ios::out | std::ios::app);
- а зачем std здесь писать, по-моему достаточно написать ios и все.

Добавлено через 3 минуты
А почему out, кстати, in же, а не out.

Добавлено через 1 минуту
И append не нужно делать при чтении файла. Читайте и изучайте жестко флаги ввода-вывода.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
31.05.2017, 09:17 3
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
ну или избежать записи в одну длинную строку
Для консоли Вы пишете:
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
<< std::endl;
И что мешает написать
C++
1
unit_1 << first_string<< std::endl;
1
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
31.05.2017, 10:12 4
Попробуй так сделать:
C++
1
2
3
4
while(!unit_2.eof()){
    unit_2.getline(first_string, 512);
    std::cout << first_string << std::endl;
}
1
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 72
31.05.2017, 14:48  [ТС] 5
anapshy, Здорово, сработало. Прям так как хотел. Спасибо большое за помощь.
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
31.05.2017, 19:29 6
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
Здорово, сработало
А ничего, что последнюю строку печатает 2 раза?
C++
1
2
3
while(  unit_2.getline(first_string, 512) )
    std::cout << first_string << std::endl;
}
0
31.05.2017, 19:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2017, 19:29
Помогаю со студенческими работами здесь

Запись и считывание матриц из файла
Добрый день коллеги! Решил изучить исключения но что-то не получается сможете помочь разобраться...

Считывание из файла и запись в файл
не знаю в чем ошибся, не могу найти ничего, помогите пожалуйста, да если не сложно , еще нужно...

Считывание и запись файла блоками
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и...

Построчная запись и считывание из файла
Пытаюсь разобраться - как работать с файлами в C++, элементарные вещи получаются, а вот чуть...


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

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