Czytanie danych z pliku i rozpoznawanie danych

0

Witam, jestem początkującym programistą w c++. Napotkałem na mały problem. Czy program jest w stanie przeczytać dane z pliku i rozpoznać jaki typ danych tam jest zapisany? Tzn np dostanie plik z takimi danymi:
[code]
1
12
mama
(1,3)
[/code]
i jest w stanie rozpoznać, że pierwsze 2 to int, później string, potem complex (zespolone). Np tak jak jest ten ostatni typ danych to jak ktos nie zainkluduje odpowiedniego typu który potrafi tworzyć takie dane to rzuci wyjatkiem ze brak odpowiedniej biblioteki lub coś podobnego?

0

Jak coś takiego zaimplementujesz to - tak. Automagicznie to nie zadziała.

0

A może jakaś wskazówka jak to zrobić? CHodzi mi o to czego uż

 

yć.

0

Hm, no generalnie najprościej to będzie wczytać całą linijkę i parsować znak po znaku. Zwykłe funkcje wczytujące tekst z pliku wystarczą.
Ale jeżeli piszesz coś w stylu pliku konfiguracyjnego, nie warto się w to bawić. Lepiej użyć XML albo napisać własną binarną serializację, gdzie typ będzie określany jakimś identyfikatorem.

0

No dobra ale zwykłe wczytywanie danych z pliku w c++ polega na dodawaniu danych do np tablicy char. Ale to będzie znak a ja potrzebuje rozpoznać czy to będzie int, double czy string / char aby odpowiednio to posortować. Więc jak np w pliku będzie:
[code]
1
1.234
mama
[/code]
to program zrobi tak:
[code]
int *liczba = 1;
double *liczba2 = 1.234
string *napis = "mama"
[/code]
Dokładnie chodzi o to że muszę zrobić listę przechowującą różne dane (taka jak w STL ale musi ona umieć przechowywać dane różnych typów). I jak np dostanę taki plik jak wyżej program będzie robił:
[code]
new Wezel<int>(1);
new Wezel<double>(1.234);
new Wezel<string>("mama");
[/code]
Więc muszę umieć rozpoznać typ danych z pliku.

0

No to jak nie możesz zmodyfikować tego pliku to pozostaje ci sprawdzanie typów analizując właśnie znaki. Jak w linii będziesz miał same cyfry to będzie to liczba, jak będzie jakaś litera to string, itd. Nie jest to idealne rozwiązanie, bo część danych będzie mogła być przechowywana w kilku typach (problem np. się pojawi, gdy zapiszesz string typu PESEL, przy wczytywaniu okaże się, że liczba jest za duża na typ int, itd, itd)

Albo możesz stworzyć zwyczajną, prostą bazę danych.
Plik Binarny
Ty baz danych, tabel, kolumn w gruncie rzeczy nie potrzebujesz, ale logika jest taka sama. Zapisujesz najpierw typ pola (string może dodatkowo mieć długość) i dopiero wartość. Przy odczytywaniu wczytujesz najpierw pierwszy znak, który będzie typem pola i dopiero wartość.

0

Zasadniczo nie jest powiedziane czy moge czy nie moge modyfikowac pliku. Dałeś mi sposób bez modyfikacji pliku a jakbym mógł modyfikować? Jest prościej?

0

Naprawdę nikt nie wie jak rozwiązać mój problem?

Naprawdę nikt nie wie jak rozwiązać mój problem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1