Перевод из одной системы счисления в другую в WindowsForms [требует правки]

280
05 ноября 2017, 18:33

Есть конвертер разных систем счисления. Я реализовал перевод с decimal в любую из четырех. Но как сделать перевод с остальных в остальные? Есть ли встроенные функции для этого, именно для Visualc++ & windowsforms? То как сделать такое просто в консольном приложении я знаю, а вот как тут следует сделать - нет.

Answer 1

Если вводимое пользователем значение является строкой, то вам подойдет следующий пример для получения dec hex и oct, при этом для каждой системы исчисления необходимо будет модифицировать поток соответствующими флагом (std::dec, std::hex, std::oct):

std::string foo = "0xff";
unsigned bar;
std::stringstream stream;
stream << std::hex << foo;
stream >> bar; // теперь bar хранит число 255.

Вот случай для bin:

std::string foo = "01011011";
std::bitset<32> bar(foo);
unsigned baz = bar.to_ulong(); // теперь baz хранит число 91.

Таким образом, вы получаете число типа unsigned для любого вида строк вводимых пользователем.
Далее передайте полученное ранее число типа unsigned в поток stringstream с соответствующим модификатором (заданным пользователем) и выведете результат на экран.

unsigned foo = 255;
std::string bar;
std::stringstream stream;
stream << std::hex << foo;
stream >> bar; // теперь bar хранит строку "ff".

Подробнее с модификацией строковых потоков можно ознакомится здесь в разделе Format flag manipulators.

READ ALSO
ЧТО ЭТО ТАКОЕ С++

ЧТО ЭТО ТАКОЕ С++

ОбЪясните, пожалуйста, что такое:

327
Как в с++ получить имя типа переменной?

Как в с++ получить имя типа переменной?

Помогите получить имя типа переменной

283
Не добавляется структура в &lt;set&gt;

Не добавляется структура в <set>

Не добавляется структура во множествоНе могу разобраться в ошибках в функции void initColor(), компилятор указывает на инструкцию isColrs

293
Не могу взять значение по итератору

Не могу взять значение по итератору

Как взятьsecond значение пары, на которую указывает

283