"Grey Alien" <grey@andromeda.comwrote in message
news:D4udnTLiIpqmUgDbnZ2dnUVZ8qjinZ2d@bt.com...
Quote:
>
>
Jim Langston wrote:
>
Quote:
>"Grey Alien" <grey@andromeda.comwrote in message
>news:HsydnVc4ZYfhLwDbnZ2dnUVZ8vWdnZ2d@bt.com...
>>
Quote:
>>>Does *ANYONE* in here know how I may parse the various date/time
>>>'elements' from a string?. The input string has the ff format:
>>>
>>>'YYYY-MM-DD HH:MM:SS AM'
>>
>>
>There were 2 replies, one of mine included, to your previous post showing
>how to parse this string using std::stringstream. Did you not read the
>replies, or did you not like them?
>
Apologies - my original post (and any subsequent replies) for some
reason - did not show up on my newsreader. Hence my repost yesterday. I
did not get any reply yesterday to my repost - hence this post today.
Could you kindly post your soln to this thread - I don't understand why
the other posts did not appear. tx
"Erik Wikström" <Erik-wikstrom@telia.comwrote in message
news:D27ni.4282$ZA.2044@newsb.telia.net...
Quote:
On 2007-07-17 18:19, Grey Alien wrote:
Quote:
>I want to parse the various time elements from a string. The input string
>has the ff format:
>>
>'YYYY-MM-DD HH:MM:SS AM'
>>
>Can anyone show me how to do this?
>
This is the only way that I know of that don't require any extra
libraries/extensions:
>
#include <iostream>
#include <sstream>
#include <string>
>
template <class T>
T stoa(const std::string& s)
{
T t;
std::istringstream iss(s);
if (!(iss >t))
throw "Can't convert";
return t;
}
>
int main()
{
std::string input;
std::getline(std::cin, input);
>
int year, mon, day, hour, min, sec;
>
year = stoa<int>(input.substr(0, 4));
mon = stoa<int>(input.substr(5, 2));
day = stoa<int>(input.substr(8, 2));
hour = stoa<int>(input.substr(11, 2));
min = stoa<int>(input.substr(14, 2));
sec = stoa<int>(input.substr(17, 2));
>
if (input.substr(20, 2) == "PM")
hour += 12;
}
>
Don't forget to apply error checking
This works also, although you should throw in error checking.
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::cout << "Enter Date/Time format: YYYY-MM-DD HH:MM:SS AM: ";
std::string DateTime;
std::getline( std::cin, DateTime );
std::stringstream Stream( DateTime );
int Year, Month, Day, Hour, Minute, Second;
std::string AmPm;
char ThrowAway;
Stream >Year >ThrowAway >Month >ThrowAway >Day;
Stream >Hour >ThrowAway >Minute >ThrowAway >Second;
Stream >AmPm;
std::cout << Year << "-" << Month << "-" << Day << " " << Hour << ":" <<
Minute << ":" << Second << " " << AmPm;
}