Ответ 1
Вы можете использовать манипуляторы std::left
, std::right
и std::internal
, чтобы выбрать, куда идут символы заполнения.
В вашем конкретном случае это может сделать следующее:
#include <iostream>
#include <iomanip>
#include <string>
const char* C_TEXT = "Constant text ";
const size_t MAXWIDTH = 10;
void print(const std::string& var_text, int num)
{
std::cout << C_TEXT
// align output to left, fill goes to right
<< std::left << std::setw(MAXWIDTH) << std::setfill('.')
<< var_text << ": " << num << '\n';
}
int main()
{
print("1234567890", 42);
print("12345", 101);
}
Вывод:
Constant text 1234567890: 42
Constant text 12345.....: 101
ИЗМЕНИТЬ:
Как упоминалось в ссылке, std::internal
работает только с целыми числами, с плавающей точкой и денежными средствами. Например, с отрицательными целыми числами, он будет вставлять символы заполнения между отрицательным знаком и самой левой цифрой.
Это:
int32_t i = -1;
std::cout << std::internal
<< std::setfill('0')
<< std::setw(11) // max 10 digits + negative sign
<< i << '\n';
i = -123;
std::cout << std::internal
<< std::setfill('0')
<< std::setw(11)
<< i;
выводит
-0000000001
-0000000123