У меня есть следующий код (упрощенно):
ostringstream oss;
oss << "Text ";
oss << hex << uppercase;
oss.width(8);
oss.fill('0');
oss << var1 << " ";
oss << var2 << " ";
oss << dec << nouppercase;
oss.width(1);
oss << var3 << " another text." << endl;
string result = oss.str();
// work with result...
Где var1
, var2
- unsigned int
, а var3
- int
.Идея состоит в том, чтобы создать строку, в которой var1
и var2
форматируются как шестнадцатеричное число (но без 0x
) и var3
как обычное целое число.То, что я обнаружил, что только первое число правильно отформатировано, второе не дополнено нулями:
Text 000AF00C 3B7FF 1 another text.
Через некоторое время я обнаружил, что установка ширины и параметров заливки ОПЯТЬ исправляет это.Есть ли способ, как не указывать эти правила форматирования снова и снова для каждого числа?Количество отформатированных переменных намного больше, чем 2, это был просто упрощенный пример.Оборачивать все это в функцию можно, но мне бы очень хотелось узнать, как сохранить форматирование с помощью ostringstream
.