Класс для чтения из файла, записи в файл

Появился вопрос по с++. Создал класс, который может читать и записывать в файл.
Функция wrire имеет две реализации. Первая записывает в файл, вторая если мы в нее передаем 2 параметра, второй параметр является буквой А, что мы открываем файле в режиме дозаписи.
И тут получаем проблемы, дело в том, что файл не открывается. Конечно, возможно объяснил как-то непонятно.
Решил, чтобы каждая функция, включая конструктор с параметрами, открывала и закрывала файл. Но файл открывается и закрывается в конструктор класса только один раз, в функциях не открывается, выдает ошибку открытия файла. Вот что пишет в консоли
open
close
error
error
Помогите пожалуйста, разобраться.
Надеюсь код файла более наглядно, донесет суть вопроса.

include<iostream>

include<string>

include<ctime>

include<fstream>

include<cstdio>

include<memory>

include<cmath>

include<windows.h>

using namespace std;
class fille {
public: string path;
fille() { cout << «erorr not path» << endl; }
fille(string path) {
fstream f; {
f.open(path, fstream::in | fstream::out);
if (f.is_open()) {
cout << «open» << endl;
}
}
f.close();
cout << «close » << endl;
}
void write(string value) {
fstream f1;
{f1.open(path, fstream::in | fstream::out);
if (f1.is_open()) { // открываем файл для добавление, получаем ошибку.
cout << «write» << endl;
f1 << value;
}
else {
cout << «error» << endl;
}
}
f1.close();
}
void write(string value, string value2) {
if (value2 == «a») {
fstream f2;
f2.open(path, fstream::in | fstream::out | fstream::app);
if (f2.is_open()) { // открываем файл для добавление, получаем ошибку.
cout << «add» << endl;
f2 << value;
}
else {
cout << «error» << endl;
}
f2.close();
}
};
~fille() { cout << «file close \n»; } // деструктор
};

int main(int args, char* argv[])
{ setlocale(LC_ALL, «ru»);
fille f(«D:\cppstudio.txt»); // Вызывается конструктор.
f.write(«первый»);
f.write(«второй», «a»);
return 0;
system(«pause»);
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.