In Ihrem Fall würde ich die gute alte C verwendet sscanf
Funktion (!):
unsigned int year, month, day;
char c;
if(sscanf(input, "%u/%u/%u%c", &month, &day, &year, &c) == 3)
{
// check ranges of your date variables!
}
Sie scheinen amerikanisches Datumsformat zu verwenden, so dass ich die Parameter passend gesetzt.
Sie fragen sich, warum ich ein zusätzliches Zeichen zu lesen? Es fängt zusätzliche Daten am Ende Ihrer Datumszeichenfolge auf, um ungültige Formate zu erkennen (wenn die Daten folgen, wird das Ergebnis 4 sein, andernfalls werden nur 3 Werte gelesen, die zurückgegeben werden). Ein Nachteil: Vor den drei Zahlen wird Leerzeichen ignoriert. Wenn Sie also nicht zulassen möchten, benötigen Sie zusätzliche Prüfungen (z. B. "%n %n%u"
und vergleichen, ob die beiden entsprechenden Werte gleich sind).
Siehe sscanf Dokumentation (scanf für Parameter).
(Wenn Sie Ihre Eingabe eine ::std::string
Instanz ist, müssen Sie sscanf(input.c_str(), ...)
, natürlich verwenden.)
ist, wie Sie es tun können: Zum Visual Studio, Erstellen Sie ein neues Projekt (bevorzugen leeres Projekt), '# include' gewünschten Bibliotheken und Programmieren beginnen. Suche weiter und versuche, bis es funktioniert. Wenn Sie irgendwo mit einem klaren Fehler scheitern, dann kommen Sie hier und wir werden mehr als glücklich sein, Ihnen zu helfen. –
Haben Sie schon einmal etwas versucht? Es gibt unzählige Beispiele auf dieser Seite und im Internet, denen Sie folgen können. Fall in Punkt: http://stackoverflow.com/questions/236129/split-a-string-in-c – NathanOliver
Ich habe dies bereits getan. Aber ich kann nicht alles in diesem metod tun, ich weiß, wie substr() funktioniert, dauert es nur dort, wo sie anfangen soll und wie viele Index sollte es gehen – pflove