這是這個的擴展問題: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'值,但不知道它們代表什麼。 –