我该怎么做?
int number;
cin >> number;
我希望在基数36中输入数字(它们通过假设输入基数36)。在底座36中,装置10,B表示11,C 12等。 C ++如何理解'A'不是一个字符,而是一个基数为36的数字,并且'cin>>'为此工作?
答案 0 :(得分:6)
您需要编写一个包含int&
的包装类,并为该类重载>>
,以便在base36中进行解析。用法如下:
int i;
cin >> base36(i);
// or if you do it more generically:
cin >> base(36, i);
标准C ++不为8,10和16以外的基础提供I / O.
答案 1 :(得分:5)
这有点像C-ish,但您可以输入一个普通字符串,然后使用基数参数为36的strtol(l)
将其转换为整数。
base-2整数的有效数字集合为01,表示base-3整数 是012,依此类推。对于大于10的碱基,有效数字包括 字母字符,从Aa开始,用于基数为11的整数,到 Zz为 base-36 integer 。字符的大小写被忽略。在非默认 区域设置,可以接受其他数字格式。
正如Jesse Good在评论中指出的那样,在C ++ 11中还有std::stol(l)
也会调用std::strtol
,但在无法执行转换时会抛出异常。