itok function implemented

This commit is contained in:
2021-05-10 19:14:35 +02:00
parent 22406e1314
commit deb483b83d
4 changed files with 12 additions and 3 deletions

View File

@@ -14,6 +14,11 @@ std::string mini_sprintf_format(bool left_align, bool sign, bool space_on_left,
if (specifier == 's') {
return value.as_string();
}
if (specifier == 'c') {
std::ostringstream stream_str;
stream_str << (char) value.as_int();
return stream_str.str();
}
if (specifier == 'i' || specifier == 'd') {
int ival = value.as_int();
is_positive = ival >= 0;
@@ -96,6 +101,7 @@ std::string mini_sprintf(const std::string &format_str, const std::vector<MlValu
case 'i':
case 'd':
case 'f':
case 'c':
case 's':
bool left_align = false;
bool sign = false;
@@ -156,7 +162,7 @@ std::string mini_sprintf(const std::string &format_str, const std::vector<MlValu
// specifier
if (si >= format_str.end())
return output_str; // invalid end of string
if (*si == 'i' || *si == 'd' || *si == 'f' || *si == 's') { // TODO more specifiers
if (*si == 'i' || *si == 'd' || *si == 'f' || *si == 's' || *si == 'c') { // TODO more specifiers
std::string s = mini_sprintf_format(left_align, sign, space_on_left, padding_by_zero, width, precision, length, *si, parameters[arg_position]);
arg_position++;
output_str += s;