Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
7 / 6 / 2
Регистрация: 19.02.2018
Сообщений: 263
1

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

12.11.2018, 18:20. Просмотров 1585. Ответов 6
Метки нет (Все метки)


Появился вопрос по с++. Создал класс, который может читать и записывать в файл.
деструктор класс закрывает файл. Функция wrire имеет две реализации. 1 записывает в файл, другая
Если мы Передаем 2 параметра, второй параметр является буквой А, что Мы открываем файле в режиме дозаписи.
И тут получаем проблемы, дело в том, что файл не открывается. Конечно, возможно объяснил как-то непонятно.
Надеюсь код Файл более наглядно, донесет чуть-чуть вопроса.
C++ (Qt)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
#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;
fstream f;
    fille(string path) {
    f.open(path, fstream::in| fstream::out);
    if (f.is_open())    {
        //cout << "open" << endl;
    }
    }
void write(string value){ 
    f<<value;}
void write(string value, string value2) {
if (value2 == "a") {
f.close(); 
fstream f1;
f1.open(path, fstream::in | fstream::out | fstream::app);
  if (f1.is_open()){
   cout << "a" << endl;
   f1 << value;
  }
  else
  {
      cout <<"error"  << endl;
  }
f1.close();
} 
}
~fille() {f.close();
cout << "file close \n";} // деструктор 
};
int main() {setlocale(LC_ALL, "ru");
fille f("D:\\cppstudio.txt");  // Вызывается конструктор.
f.write("огрмас","a");
return 0;
system("pause");}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2018, 18:20
Ответы с готовыми решениями:

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

Класс записи/чтения матрицы в файл
Учу по немного С++, попробовал реализовать класс записи/чтения матрицы в файл struct IFile { ...

После копирования файла методом чтения-записи файл копия оказывается поврежденным
Реализовывал копирование фала путем : а) чтения содержимого файла в массив. б) запись содержимого...

Открытие файла для чтения/записи
Помогите реализовать открытие файла под компилятор g++ или DevC++ вечно ругается на std.. using...

6
6918 / 5983 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
12.11.2018, 19:14 2
Ты же не сохраняешь имя файла в классе. Да и зачем вообще нужен второй файл?
0
7 / 6 / 2
Регистрация: 19.02.2018
Сообщений: 263
12.11.2018, 19:21  [ТС] 3
Спасибо большое, уважаемый nmcf за ваше участие. Я использую один файл, его закрываю, чтобы сменить режим записи в файле.
0
6918 / 5983 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
12.11.2018, 19:57 4
Ты в любом случае записываешь в конец.
0
7 / 6 / 2
Регистрация: 19.02.2018
Сообщений: 263
12.11.2018, 20:13  [ТС] 5
Но если nmcf не указать path, fstream::in | fstream::out | fstream::app то старая информация сотрется при записи файл.
решил, чтобы каждая функция включая конструктор с параметрами, открывала и закрывала файл. Но файл открывается и закрывается в классе только один раз, в функциях не открывается, выдает ошибку открытия Файл. Вот что пишет в консоли
open
close
error
error
Помогите пожалуйста, разобраться.
C++ (Qt)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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");}
0
6918 / 5983 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
12.11.2018, 20:57 6
Я уже писал почему так.
0
7 / 6 / 2
Регистрация: 19.02.2018
Сообщений: 263
14.11.2018, 02:11  [ТС] 7
nmcf, Написал класс для записи и чтение из файла.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
#include<string> 
#include<ctime>
#include<fstream>
#include<cstdio> 
#include<memory> 
#include<cmath>
#include<windows.h>
 
using namespace std;
 
void writefille(string *path1, string value) {fstream f1; {f1.open(*path1, fstream::in | fstream::out);
f1 << value<<"\n";}f1.close();};
void writefille(string *path1, string value, string value2) {fstream f1; {f1.open(*path1, fstream::in | fstream::out | fstream::app);
f1 << value<<"\n";}f1.close();};
void readfille(string *path1) { fstream f1; {f1.open(*path1, fstream::in);
while (!f1.eof()){string str = "";
getline(f1, str);
cout << str << endl;}}
f1.close();
};
class fille {public:
string path; string path1;
fille() { cout << "erorr not path" << endl; }
fille(string path) {path1 = path;
fstream f; {f.open(path, fstream::in | fstream::out);
    if (f.is_open()) {
    }}f.close();;}
    void write(string value) {
        writefille(&path1, value);}
    void write(string value, string value2) {
        if (value2 == "a") {
            fstream f2;
            writefille(&path1, value, value2);
        }
        else {cout << "error" << endl;
            }
    }
    void read() {readfille(&path1);}
};
int main(int args, char* argv[]) {
    setlocale(LC_ALL, "ru");
    fille f("D:\\cppstudio.txt");  // Вызывается конструктор.
    f.write("3320","a");
    f.read();
return 0;
system("pause");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2018, 02:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как открыть файл одновременно для чтения и для записи?
Делаю вот так, но ничего не получается.:( std::fstream inOutCredit(&quot;credit.dat&quot;, std::ios::ate |...

Нужно создать класс для чтения из файла
Нужно создать класс для чтения из файла.

Как инициализировать дескриптор для записи и чтения файла
Здорова! Написал программку для чтения из файла. Но чото при вызове ничего не происходит. ...

Как указать расположение файла для записи/чтения
Всем привет, учусь работать с файлами, не совсем понятно где они сохраняются, и как изменить путь...


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

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

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