2011-11-25 92 views
1

我有一個由cin填充的字符數組,但我試圖找到一種方法來單獨檢查每個字符,以確保它只有一個字符集(az,AZ,0-9 ,[空間])。從字符獲取字符代碼

我認爲這可以做的最簡單的方法是檢查角色的代碼是否落在一定範圍內。但不知道如何得到它。

或者,如果有人知道任何其他方式做到這一點,那就太好了。

+0

[此處](http://www.cplusplus.com/reference/clibrary/cctype)中的功能可能有所幫助。 – Lalaland

回答

5

最簡單的方法是使用isalpha()isdigit()isalnum()

char ch = ... // The character 

// Original solution 
if (isalpha(ch) || isdigit(ch)){ 

} 

// Better solution by fefe (see comments) 
if (isalnum(ch)){ 

} 

這些在ctype.h定義:http://www.cplusplus.com/reference/clibrary/cctype/

否則,你還可以使用比較:

if ('a' <= ch && ch <= 'z' || 
    'A' <= ch && ch <= 'Z' || 
    '0' <= ch && ch <= '9' 
){ 

} 

後者使用比較的方法將推廣到任意範圍。

+0

啊,那是用ctype.h?對不起,tad new to C++ – topherg

+1

正在打字的過程中 - 因此靈活的手指點! –

+0

是的,它在'ctype.h'中。 – Mysticial

1

您可以確定數字是否在ASCII表格內:http://www.asciitable.com/index/asciifull.gif。所以> = 48 & & < 123.

+0

儘管'xxx> ='A'&& xxx <='Z''更容易,更易於讀者/維護者。 – 2011-11-25 17:51:52

+0

同意,其他解決方案更合適。 – TVOHM

+1

匹配了大量的標點符號。如果這樣做,請分別檢查每個範圍(32,48-57,65-90,97-122)。 – cHao

3

通過使用單引號中需要的字符(例如'A'),可以輕鬆訪問特定字符代碼。因此,如果你想檢查一個字符是在一定範圍內:

char c = //some character 
if (c >= 'A' && c <= 'Z') { 
    //do something 
} 

應該工作如你所願。此外,如果您特別關注字母數字,則會在<ctype.h>中定義一個名爲isalnum的助手函數,用於檢查字符是否爲字母數字字符。