这是这个的扩展问题:Is std::string suppose to have only Ascii characters如何强制用户/ OS输入ASCII字符串
我想建立一个采取从用户的字符集输入一个简单的控制台应用程序。这些字符包括0->9
数字和a->z
字母。
我正在处理输入,假设它是一个Ascii。例如,我正在使用类似于:static_cast<unsigned int>(my_char - '0')
的编号为unsigned int
。
如何让这个代码跨平台?我怎么能说我希望输入始终是Ascii?或者我错过了很多概念,static_cast<unsigned int>(my_char - '0')
只是一个坏的方法?
P.S.在Ascii(至少)数字已排序。但是,在其他编码中,我不知道他们有没有。 (我敢肯定,他们却没有保证,对吧?)
[FYI]'的static_cast <无符号整数>(my_char - '0')'是保证在所有字符工作集C++用途。 – NathanOliver
@NathanOliver嗯我怀疑..但是,这只是一个例子..我会再添加一个。谢谢 –
@NathanOliver:但不是用户可以输入的所有字符集。在MOST字符集中,字符的ASCII范围是相同的。但是在所有的字符集中都不是这样。例如,EBCDIC不对ASCII码使用相同的“char”值(''0'为ASCII码为0x30,但EBCDIC为0xF0),EBCDIC不对所有ASCII字符使用连续范围。所以,处理它时必须考虑输入字符集。 'std :: string'只知道'char'值,但不知道它们代表什么。 –