C++ Utilities
5.10.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
|
Go to the documentation of this file.
3 #include "../conversion/stringconversion.h"
36 TimeSpan TimeSpan::fromString(
const char *str,
char separator)
44 for (
const char *
i = str; *
i; ++
i) {
45 *
i == separator && ++partsSize;
47 parts.reserve(partsSize);
49 for (
const char *
i = str;;) {
50 if (*
i == separator) {
51 parts.emplace_back(stringToNumber<double>(
string(str,
i)));
53 }
else if (*
i ==
'\0') {
54 parts.emplace_back(stringToNumber<double>(
string(str,
i)));
61 switch (parts.size()) {
63 return TimeSpan::fromSeconds(parts.front());
65 return TimeSpan::fromMinutes(parts.front()) + TimeSpan::fromSeconds(parts[1]);
67 return TimeSpan::fromHours(parts.front()) + TimeSpan::fromMinutes(parts[1]) + TimeSpan::fromSeconds(parts[2]);
69 return TimeSpan::fromDays(parts.front()) + TimeSpan::fromHours(parts[1]) + TimeSpan::fromMinutes(parts[2]) + TimeSpan::fromSeconds(parts[3]);
83 stringstream s(stringstream::in | stringstream::out);
87 positive.m_ticks = -positive.m_ticks;
90 case TimeSpanOutputFormat::Normal:
91 s << setfill(
'0') << setw(2) << floor(positive.
totalHours()) <<
":" << setw(2) << positive.
minutes() <<
":" << setw(2) << positive.
seconds();
96 if (milli || micro || nano) {
97 s <<
'.' << setw(3) << milli;
99 s << setw(3) << micro;
101 s << nano / TimeSpan::nanosecondsPerTick;
107 case TimeSpanOutputFormat::WithMeasures:
115 bool needWhitespace =
false;
116 if (
const int days = positive.
days()) {
117 needWhitespace =
true;
120 if (
const int hours = positive.
hours()) {
123 needWhitespace =
true;
126 if (
const int minutes = positive.
minutes()) {
129 needWhitespace =
true;
130 s << minutes <<
" min";
132 if (
const int seconds = positive.
seconds()) {
135 needWhitespace =
true;
136 s << seconds <<
" s";
142 needWhitespace =
true;
143 s << milliseconds <<
" ms";
148 needWhitespace =
true;
149 s << microseconds <<
" µs";
151 if (
const int nanoseconds = positive.
nanoseconds()) {
154 s << nanoseconds <<
" ns";
160 case TimeSpanOutputFormat::TotalSeconds:
162 s << setprecision(0);
164 s << setprecision(10);
constexpr double totalMilliseconds() const
Returns the value of the current TimeSpan class expressed in whole and fractional milliseconds.
constexpr double totalMicroseconds() const
Returns the value of the current TimeSpan class expressed in whole and fractional microseconds.
constexpr int milliseconds() const
Returns the miliseconds component of the time interval represented by the current TimeSpan class.
constexpr int seconds() const
Returns the seconds component of the time interval represented by the current TimeSpan class.
TimeSpanOutputFormat
Specifies the output format.
constexpr int hours() const
Returns the hours component of the time interval represented by the current TimeSpan class.
constexpr int minutes() const
Returns the minutes component of the time interval represented by the current TimeSpan class.
Contains all utilities provides by the c++utilities library.
constexpr int microseconds() const
Returns the microseconds component of the time interval represented by the current TimeSpan class.
Represents a time interval.
constexpr double totalHours() const
Returns the value of the current TimeSpan class expressed in whole and fractional hours.
constexpr bool isNegative() const
Returns ture if the time interval represented by the current TimeSpan class is negative.
constexpr int nanoseconds() const
Returns the nanoseconds component of the time interval represented by the current TimeSpan class.
constexpr int days() const
Returns the days component of the time interval represented by the current TimeSpan class.
constexpr double totalSeconds() const
Returns the value of the current TimeSpan class expressed in whole and fractional seconds.