Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851

Работа с fstream, в разных функциях открывать, закрывать и читать, записывать файл

24.07.2020, 21:12. Показов 896. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в разных функциях открывать, закрывать и читать, записывать файл, с помощью fstream.
Пример, есть функция моего класса для работы с файлами.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    char* fileRead()
    {
    std::ifstream fin(filePath, std::ios::in);
    if(!fin.is_open())
        std::cout << "Файл не открылся !" << std::endl;
        //return 0; // is_open вернет 0 если файл не открыт.
    else
        {
        std::cout << "Файл открыт для чтения." << std::endl;
        //return 1; // is_open вернет 1 если файл открыт.
        fin.getline(buffer, count); // считали строку из файла
        fin.close();
        }
    return buffer;
    }
Как разделить, в разных функциях - открытие, применение, закрытие файла.
У меня что то не получается.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2020, 21:12
Ответы с готовыми решениями:

Как правильно открывать файл и записывать/читать из него
Как правильно открывать файл и записывать/читать из него? На разных сайтах и учебниках есть различные примеры етого но везде разные ...

Как объявлять, инициализировать, читать/записывать, закрывать сокеты?
Напишите что знаете про то, как их объявлять, инициализировать, читать/записывать, закрывать. Или дайте ссылку на инфу. Пожалуйста. ...

Fstream не может и записывать в файл, и считывать из него?
fstream file(&quot;as.txt&quot;); int number = 7; file &lt;&lt; number; int numb; file &gt;&gt; numb; cout &lt;&lt; numb &lt;&lt; endl; file.close(); Такой,...

5
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
24.07.2020, 21:26
fstream это производный от iostream класс.
Поэтому ничего придумывать не надо.
Достаточно перегрузить функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
istream& operator>>(istream &is,your_class_name& a)
{
    is.getline(a.buffer, a.count);
    return is;
}
int main()
{
   your_class_name x;
   cin>>x; // Для ввода с клавиатуры
   
   ifstream fin("filename.txt");
   if(!fin)
        cout << "Файл не открылся !" << endl;
   else
  {
        fin >> x; // для ввода из файла
        fin.close();
  }
}
1
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
24.07.2020, 22:48  [ТС]
zss, Спасибо, разбираюсь.
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
25.07.2020, 18:21  [ТС]
zss, Простите но я до конца не понял значения первой строки, а в интернете искать ответ устал.

C++
1
istream& operator>>(istream &is,your_class_name& a)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
25.07.2020, 19:21
Строки 1-5 - это функция перегружающая оператор ввода >> для Вашего класса.
При ее наличии можно будет использовать операции
Цитата Сообщение от zss Посмотреть сообщение
cin>>x; // Для ввода с клавиатуры
Цитата Сообщение от zss Посмотреть сообщение
fin >> x; // для ввода из файла
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
25.07.2020, 20:10  [ТС]
zss, Большое спасибо, извините мою неграмотность в синтаксисе c++ . Думаю я некорректно задал вопрос. Смысл был в передаче fout как возврата и аргумента функции. Я не знал что так можно std::ofstream dataBase::openSaveFileDataBase(), void dataBase::saveFileDataBase(std::ofstream fout). Да и задача была простая. Я спрашивал как разделить на разные функции - открытие, чтение и закрытие файла.

Вот мое решение.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Открытие файла.
std::ofstream dataBase::openSaveFileDataBase()
{
    std::ofstream fout;
    // Открыть файл для записи.
    fout.open("E:\\dataBase.txt");
    // вызов метода is_open()
    if(!fout.is_open())
    {
    std::cout << "Файл не открыт !" << std::endl;
    }
    else
    return fout;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Запись в файл.
void dataBase::saveFileDataBase(std::ofstream fout)
{
    // Записать данные в файл.
    std::cout << "Запись в файл базы данных !" << std::endl;
    prodvector.begin();
    for(int index=0; index<=prodquantity; index++)
        {
        fout << prodvector.at(index).name;
        fout << prodvector.at(index).price;
        fout << prodvector.at(index).markup;
        }
}
C++
1
2
3
4
5
// Закрытие файла.
void closeFileRead(std::ofstream fout)
{
fout.close();
}
Но появилась другая проблема, но это отдельная тема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2020, 20:10
Помогаю со студенческими работами здесь

Как читать и записывать файл
Записал в файл миллион строк (числа от 1 до миллиона), построчное чтение при указании конкретной строки № 900 тыс. занимает 0,2 сек, что...

Как читать и записывать данные в файл Excel ?
Доброго времени суток! Подскажите как считывать данные из excel файла и в процессе работы вносить изменения в него. Нужно чтобы после ввода...

Как читать и записывать данные в файл в Инете?
Как читать и записывать данные в файл в Инете?

Как читать и записывать в текстовый файл из ресурсов?
записываю в обычный файл вот так StreamWriter input = new StreamWriter(&quot;data.txt&quot;); ...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru