Форум программистов, компьютерный форум CyberForum.ru

fstream не работает и чтение и запись - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Некорректное считывание из файла http://www.cyberforum.ru/cpp-beginners/thread520777.html
Есть необходимость записывать и считывать в файл и обратно С первым все просто, со вторым казалось бы тоже, но не получается void AddressBook::read_from_file(std::fstream& file) { //1 std::istream_iterator<RegisteredPerson> iter(file), end; while (iter != end) { RegisteredPerson p; p = *iter;
C++ Структура и рандом. у меня в структуре есть пять типов данных struct Dzho { int pid; double burst; int priority; int working; int waiting; }; http://www.cyberforum.ru/cpp-beginners/thread520764.html
C++ Использование двух контейнеров из STL
Нужно, чтобы: 1) Каждый объект имел свой уникальный ключ. 2) Быстрая выборка по ключу. 3) Быстрое прохождение по всем объектам. Для первых двух, как я понимаю, подходит map, а для последнего пункта vector; Возможно, создать два контейнера vector и map и в них хранить указатели на объекты, map использовать для выборки по ключу, а vector по переходу по всем объектам? Подскажите, как лучше...
Как читать строку типа "НомерБуква" C++
Привет. Как лучше читать строку типа "НомерБуква". Примеры строк: 1А, 25В, 6С. Мне нужно чтоб номер был в переменой "а", а буква в переменой "с". Какой метод лучше?
C++ Парсинг строк из файла http://www.cyberforum.ru/cpp-beginners/thread520740.html
Имеется файл с содержанием 3 Text Text2 Text3
C++ От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно И опять: сколько можно? Задано натуральное число N. От данного числа вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. Данную операцию будем продолжать до тех пор, пока полученное число положительно. Сколько раз будем выполнять данную операцию? Технические условия Входные данные Во входной строке находится число N, которое не превышает... подробнее

Показать сообщение отдельно
Red Planet
 Аватар для Red Planet
49 / 10 / 2
Регистрация: 20.09.2009
Сообщений: 263
17.03.2012, 15:50  [ТС]     fstream не работает и чтение и запись
Я не понимал эту запись

Цитата Сообщение от retmas Посмотреть сообщение
ios_base::in | ios_base::out | ios_base::app)
Это ведь просто для примера показано, какие параметры могут быть в качестве ios_base::openmode (или ios_base::in, или out, или append).

Хочу еще спросить о вводе/выводе. Прочитал о функции flush(), терминология неясна.

"Она принудительно записывает содержимое буфера, связанного с потоком, на устройство вывода," - пишет Герберт Шилдт.

Я правильно понял? Устройство вывода здесь - файл, в который идет запись.

А это на самом деле запись в некий низкоуровневый буфер (basic_filebuf или нет?).
Код
somefile << "Lorem ipsum..."
Когда мы делаем flush(), то все, что оставалось в буфере, записывается в файл, т. о., буфер освобождается для последующего внесения туда информации, которая тоже будет записана в файл.

Я правильно представил себе работу потока вывода или нет?

А моя задача решена. Нужно было записать в файл определенную первую строку.

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
27
28
29
30
31
32
33
34
#include <vcl>
#include <fstream>
#include <iostream>
#include <string>
#pragma hdrstop
 
using namespace std;
 
#pragma argsused // No warning if function args are not in use.
 
// But there is no warning while compiling project. Why?
int _tmain(int argc, _TCHAR* argv[]) {
    fstream fs("test.txt", ios_base::in);
    string must_be = "Must be the first line";
    string first_line;
 
    if (fs.good()) { // If file stats.txt exists line will be read
        cout << "File exists. Let\'s check first line" << endl;
        getline(fs, first_line);
    }
 
    if (first_line != must_be) { // Let's set the first line
        fs.close();
        fs.open("test.txt", ios_base::out);
        fs.clear();
 
        fs << must_be << "\n";
        cout << "First line was changed to " << must_be << "\n";
    }
    else cout << "The first line is correct" << endl;
    if (fs.is_open()) fs.close();
 
    system("pause");
}
 
Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru