Вы пытаетесь применить модификатор формата к двум аргументам разных типов (строковый литерал и double
), которые не могут сработать.Чтобы задать ширину как "$ "
, так и число, сначала необходимо преобразовать оба значения в строку.Одним из способов будет
std::ostringstream os;
os << "$ " << 34.45;
const std::string moneyStr = os.str();
std::cout << "Result" << std::setw(15) << std::right << moneyStr << "\n";
Это, по общему признанию, многословно, поэтому вы можете поместить первую часть в вспомогательную функцию.Кроме того, std::ostringstream
форматирование может быть не лучшим выбором, вы также можете взглянуть на std::snprintf
(перегрузка 4).