Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zzzLoLzzz
1 / 1 / 0
Регистрация: 21.03.2015
Сообщений: 45
#1

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

31.05.2017, 08:32. Просмотров 139. Ответов 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++):

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

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

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

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

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

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

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
Модератор
Эксперт С++
6694 / 6256 / 2085
Регистрация: 18.12.2011
Сообщений: 16,334
Завершенные тесты: 1
31.05.2017, 09:17 #3
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
ну или избежать записи в одну длинную строку
Для консоли Вы пишете:
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
<< std::endl;
И что мешает написать
C++
1
unit_1 << first_string<< std::endl;
1
anapshy
152 / 156 / 64
Регистрация: 14.11.2016
Сообщений: 615
Завершенные тесты: 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
1 / 1 / 0
Регистрация: 21.03.2015
Сообщений: 45
31.05.2017, 14:48  [ТС] #5
anapshy, Здорово, сработало. Прям так как хотел. Спасибо большое за помощь.
1
zss
Модератор
Эксперт С++
6694 / 6256 / 2085
Регистрация: 18.12.2011
Сообщений: 16,334
Завершенные тесты: 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
Привет! Вот еще темы с ответами:

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

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

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

Считывание из файла трехмерного массива и запись - C++
Доброго времени суток, прошу помочь в следующем. :) Собственно вот создание трехмерного массива int c = 2; int a = 3; int b = 2;...


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

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

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