Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
zzzLoLzzz
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 67
#1

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

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

Написал 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2017, 08:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запись и считывание из файла (C++):

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

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

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

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

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

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

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

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

Добавлено через 1 минуту
И append не нужно делать при чтении файла. Читайте и изучайте жестко флаги ввода-вывода.
0
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
31.05.2017, 09:17 #3
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
ну или избежать записи в одну длинную строку
Для консоли Вы пишете:
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
<< std::endl;
И что мешает написать
C++
1
unit_1 << first_string<< std::endl;
1
anapshy
179 / 183 / 169
Регистрация: 14.11.2016
Сообщений: 713
Завершенные тесты: 3
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
zzzLoLzzz
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 67
31.05.2017, 14:48  [ТС] #5
anapshy, Здорово, сработало. Прям так как хотел. Спасибо большое за помощь.
1
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 19:29
Привет! Вот еще темы с решениями:

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

Считывание\запись int из файла\в файл
как считать Int из файла потом его же записать?

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

Считывание чисел из файла и запись их в массив
Имеется файл txt со следующей строкой: ght# 1, nkat= 8, str= 1.00000, lmv= 0.5000 0.0001 0.0001 (reduced coord) ght# 2, nkat= ...


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

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

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