Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie]Zapisywanie danych w programie.


Rekomendowane odpowiedzi

Opublikowano

Witam mam problem otóż nie mogę znaleźć żadnej odpowiedzi na moje pytanie w google.Mam pytanie jak zrobić aby po wprowadzeniu zmiennej w programie lub string lub jakiś danych do tablicy były one nadal po włączeniu ponownym programu.Chodzi oto głównie ,że wszystkie wprowadzone zmiany w programie takie jak wprowadzenie zmiennej były takie same po uruchumieniu ponownym programu.

MikartPL.png

Opublikowano

Musisz zapisać te dane do pliku, a po ponownym uruchomieniu programu po prostu je z niego wczytać.

 

Przykładowy program:

 

#include <iostream>
#include <fstream>
using namespace std;
int tablica[10];
void wczytaj(void)
{
ifstream plik("dane.dat", ios::in | ios::binary); //otwieramy plik do odczytu w trybie binarnym
if (plik.good())
 plik.read((char*)tablica, sizeof(tablica));
if (plik.is_open())
 plik.close();
}
void zapisz(void)
{
ofstream plik("dane.dat", ios::out | ios::binary); //otwieramy plik do zapisu w trybie binarnym
if (plik.good())
 plik.write((char*)tablica, sizeof(tablica));
if (plik.is_open())
 plik.close();
}

int main()
{
for (int i = 0; i < 10; i++)
 tablica[i] = 2;	 //wypelniamy tablice przykladowymi danymi (dwojkami)
zapisz(); //zapisujemy do pliku
for (int i = 0; i < 10; i++)
 tablica[i] = 0;	  //zerujemy tablice aby sprawdzic czy wczytywanie przebiegnie pomyslnie
wczytaj(); //odczytujemy z pliku
for (int i = 0; i < 10; i++)
 cout << tablica[i]; //wypisujemy - patrzymy czy dane zostaly wczytane poprawnie (powinno byc 10 dwojek)

cout << endl;
system("pause");
return 0;
}

Opublikowano

Nazywa się to "serializacja", co możesz sobie zgooglować.

Ogólny koncept to:

- stworzenie klasy / "interfesju" do obsługi serializacji w twoim programie (statyczne pola określające ścieżkę do pliku lub strumień )

- każda klasa, którą chcesz zachować, dziedziczy z pow. interfejsu i implementuje metody czysto wirtualne służące do zapisu/odczytu

- zapis/odczyt polega na przekształcenie każdego obiektu czy zmiennej do pliku; korzystamy z biblioteki fstream w trybie std::ios::binary

- obiekty są dużo bardziej "tricky", ale o ile nie są wirtualne, zazwyczaj placement new oraz reinterprest_cast<char*>

 

Więcej tutaj:

http://www.parashift...e-overview.html

Ta sygnatura jest pusta.

Pomocnik
Opublikowano

Tak prosto pisząc kolega wyżej proponuje ci coś jak zrzut pamięci (dump) .

 

Ja proponuję ci stworzenie aplikacji działającej w tle w której będziesz przechowywał aktualne kopie danych(coś jak sql) i łączenie się do niej, innymi słowy proponuję ci stworzenie data servera i łączenia się z nim za pomocą portów com, będzie to szybsze niż korzystanie z dysku twardego i odczyt z niego.

 

4ggr35510n apropo serializacji i przesyłania tego przez internet, to istny odlot, nie lepiej użyć sql'a? więcej pracy ale nieporównywalnie większa wydajność przy większych aplikacjach :)

  • 1 miesiąc temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...