C++ Zapis do pliku tekstowego

Zapis do pliku tekstowego:
-trzeba włączyć plik nagłówkowych #include<fstream>
-plik nagłówkowy fstream zawiera definicję klasy ofstream obsługującej dane wyjściowe
-trzeba zdeklarować jedną lub więcej zmiennych, czyli obiektów, klasy ofstream i ich nazwy są dowolne, byle by były zgodne z konwencjami nazewniczymi C++
-trzeba korzystać z przestrzeni nazw std; można co zrobić za pomocą derektywy using lub stosując przedrostek std:: do takich elementów programu jak ofstream
-poszczególne obiekty klasy ofstream wiąże się z fizycznymi plikami np. metodą open()
-Kiedy kończymy korzystnie z pliku zamykamy go metodą close()
-w przypadku obiektów klasy ofstream rozmaite typy danych można zapisywać operatorem <<


ofstream outFile //outFile to obiekt klasy ofstream fout


//Powiązanie obiektu z plikami:

outFile.open("fish.txt") //outFile pozwoli pisać do pliku fish.txt
char Filenam[50]
cin >> filename;
fout.open(filename);
double wt = 125.8
outFile << wt; // zapis liczby do pliku fish.txt
char line [81] = "Obiekty są, bliżej niż może się to wydawać.";
fout << line << endl; //zapis wiersza tekstu




//outfile.cpp
#include <iostream>
#include <fstream>

int main()
{
using namespace std;
char automobile[50];
int year;
double a_price;
double d_price;
ofstream outFile;
ouFile.open("carinfo.txt")
cout << "Dodaj markę i model auta";
cin.gettime(automobile,50);
cout << "Dodaj rolę produkcji:";
cin >> year;
cout << "Dodaj cenę wyjściową:";
cin >>d_price;
d_price = 0,913 * a_price;
outFile << fixed;
outFile.precision(2);
outFile.self(ios_base::showpoint);
outFile << "Marka i midel" << automobile << endl;
outFile << "rok"<< year << endl;
outFile <<"Cena wywołania w zł" <a_price << endl;
outFile << "Cena bieżąca" << d_price << endl;
outFile.close();
return 0;

}



-Obiekt klasy ofstream może korzystać z różnych metod formatujących obiekt const jak:
  *endl
  *self()
  *precision() -> precyzja

-outFile.open("carinfo.txt");
carinfo.txt w chwili uruchamiania programu nie istnieć, więc metoda open() utworzylo nowy plik o podanej nazwie. Co by się stało gdyby plik ten już istniał? Domyślnie funkcja open() najpierw ustanowiłby jego wielkość na zera, de facto usuwając jego wszystkie .. dopiero potem wpisywała by do niego nowe treść.


Odczyt danych z pliku tekstowego:
-trzeba włączyć do programu plik nagłówkowy fstream
-plik nagłówkowy fstream zawiera definicję klasy istream, która obsługuje normami.
-trzeba odwoływać się do przestrzeń nazw std;
-obiekt klasy ifstream trzeba powiązać z plikiem, można co zrobić np. metodą open();
-kiedy plik przestaje być potrzebny należy po zamknąć metodą close()
-do wczytywania danych różnych typów można używać operatora >> z obiektem klasy ifstream
-można używać metody get() obiektu klasy ifstream w celu odczytywania pojedynczych znaków oraz metody getline() do odczytywania naraz całego wiersza
-można użyc obiektu cin z metodami takimi jak eof(), ...(), które sprawdzają czy dane były wczytane
-sam obiekt ifstream, użyty w warunku, jest konserwowany na wartość logiczną tnie, jeśli udał się odczyt lub false w przeciwnym razie.

ifstream inFile;
ifstream fin;
inFile.open("bowling.txt"); // obiekt inFile służy do odczytu boaling.txt
char filename[50];
cin >> filename;
fin.open(filename);
double wt;
inFile >> wt;
char line[81];
fin.getline (line, 81); //odczyt wiersza tekstu

inFile.open("bowling.txt");
if(!inFile.isopen())
{exit (EXIT_FAILURE); }
//exit() w # include <csdlib>
//isopen() może niedziałać wtedy good()


//simafile.cpp

#include<iostream>
#include<fstream>
#include<cstdlib>

const int SIZE = 60;
int main()
{
using namespace std;
char filename[SIZE];
ifstream inFile;
cout << "Podaj nazwę pliku z domymi"
cin.gettime(filename, SIZE);
inFile.open(filename);
if(! inFile.open())
{
  cout << "Otwarcie pliku: << filename << "niepowodło się.\n";
  cout << "Program zostanie zakończony .\n";
  exit (EXIT, FAILURE);
}
}


double value;
double suma = 0.0;
int count = 0; //liczba dokumentów do odczytu
inFile >> value //pobierz pierwszą wartość
while (inFile.good())
{
  ++ count;
  sum = value // obliczanie bieżącej  ...
  inFile >> value // pobieranie następnej

if(inFile.eof())
  cout << "Koniec pliku. \n";
else if (inFile.fail())
  cout << "Wczytywanie danych pierwotnych - błąd \n"
else
  cout << "Wczytanie danych pierwotnych - przyczyna mu ..."
if ( count ==0)
   cout <<"Nieprzetworzono żadnych danych. \n"
else
{
   cout << "Wczytanych elementów: " << count << endl;
   cout << "Suma." <<sum <<endl;
   cout << "Średnia" << sum/count << endl;
}
 
inFile.close();
return 0;
}

Komentarze

Popularne posty z tego bloga

Kubernetes

Helm

Ansible Tower / AWX