Ich habe Probleme beim Schneiden einer Zeichenfolge in den Leerzeichen. Hier ist mein Code.Verwenden von getline und stringstream zum Trennen der Zeichenfolge
#include <sstream>
#include <iostream>
#include <vector>
#include <string>
void formatData(std::string rawTime) {
std::stringstream rawStream(rawTime);
std::string month, time, temp, date, timePeriod = "";
int day, year, monthNum;
std::vector<std::string> segments;
while (std::getline(rawStream, temp, ' ')) {
segments.push_back(temp); //now have a vector of {"MM-DD-YYYY", "HH:MM:SS", "XM"}
}
date = segments[0];
time = segments[1];
if (segments.size() > 2)
timePeriod = segments[2];
///code that assigns month, day and year values
std::cout << "You were born on " << month << " " << day << ", " << year << " at " << time; }
main() nimmt nur einen Eingang, bringt es in einen String, übergibt dann die Zeichenfolge an das Format() Funktion oben.
Wenn ich diesen Code mit der Eingabe '08 -27-1980 10:56:59 'ausführen, bricht mein Code bei der Zeile "Zeit = Segmente [1]" und ich bekomme einen Fehler "Vektor Index außerhalb des Bereichs" . Ich erwarte, dass das Programm die Eingabezeichenfolge in zwei Zeichenfolgen aufteilt und jede Zeichenfolge in die Vektorsegmente einfügt. Das ist jedoch nicht das, was passiert. Was ist hier los und wie kann ich es beheben?
[Kann nicht reproduziert werden] (http://coliru.stacked-crooked.com/a/dac93f33965372d8) –