2016-05-27 7 views
-3

So habe ich diese Datei mit mehreren Terminen wie folgt aus:Lese formated Datum aus einer Datei C++

2.10.2015 
13.12.2016 
... 

Ich frage mich, wie aus dieser Datei und speichern Tag, Monat und Jahr in 3 separate Zahlen zu lesen.

Danke.

+3

Was haben Sie versucht? Dies ist ziemlich einfach, da der Stream "int" -Werte liest und Sie die einzelnen '.' Trennzeichen zwischen ihnen über' char' konsumieren können. –

Antwort

0

Man könnte so etwas wie dies versucht:

// construct stream object and open file 
std::ifstream ifs(file_name.c_str()); 

// check if opened successfully 
if (!ifs) std::cerr <<"Can't open input file!\n"; 

int year, month, day; 
char dot; 

// extract date 
ifs >> day >> dot >> month >> dot >> year; 

// check input format 
if (dot != '.') // add ranges for month and days validity 
{ 
    std::cerr <<"Wrong date format!\n"; 
} 

Der obige Code in einer (while) Schleife platziert werden, um die Datei Zeile für Zeile zu lesen.

+1

Danke, das funktioniert. – xxm0dxx

+0

@ xxm0dxx Wenn dies Ihr Problem gelöst hat, vergessen Sie bitte nicht zu bestätigen. –

1

einem istream foo gegeben, die die Daten enthält Sie verwenden möchten get_time:

vector<tm> bar; 
tm i; 

while(foo >> get_time(&i, "%d.%m.%Y")) bar.push_back(i); 

Live Example

Natürlich defensive Eingang Best Practice ist, und das für einen komplexen Eingangs sehr schwierig sein kann zu tun Geben Sie ein Datum ein. Wenn Sie dafür gehen, können Sie diese hilfreich finden: https://stackoverflow.com/a/29413535/2642059

Verwandte Themen