У меня есть класс полиномов, а его естественное представление - его коэффициенты. Если задан коэффициент, то его a 1 для биномиального базиса, 1 или 2 для трехчленного базиса и т. Д. Например, в биномиальном базисе X + 1 представляется как 101; и в триномном порядке, 2X + 1 представлен как 201.Использование ostream с базами, отличными от 8, 10 и 16
Класс обеспечивает перегрузку operator<<
. Внутренне класс представляет коэффициенты с использованием целочисленного массива. Так что я должен быть в состоянии выполнить:
ostringstream oss;
for (size_t i=0; i<v.size(); i++)
oss << v[i];
Проблема, которую я имею, я не знаю, как настроить ostream для других оснований, чем 8, 10 и 16. ios_base
обеспечивает std::oct
, std::dec
и std::hex
для популярные базы, но я не вижу, что использовать для менее часто используемых баз. И такие страницы, как C++ Reference on ios_base, не обсуждают, что использовать.
Как использовать ostream с базами, отличными от 8, 10 и 16?
Нет, нет поддержки для других баз. Вы должны преобразовать его в строку и вывести это. –
Не уверен, что это возможно с использованием стандартных средств. Глядя на http://en.cppreference.com/w/cpp/io/manip/setbase - «Значения базы, отличной от 8, 10 или 16, сбрасывают базовое поле до нуля, что соответствует десятичному выходному сигналу и входному сигналу, зависящему от префикса. " – jready
Если что-то, о чем я не знаю, было добавлено совсем недавно, в iostreams нет поддержки для баз, отличных от 8, 10 и 16. Вам нужно будет читать числа как строки и декодировать их вручную. – zwol