2010-02-26 58 views

回答

11

使用isdigit

std::string s("mystring is the best"); 
if (isdigit(s.at(10))){ 
    //the char at position 10 is a digit 
} 

您需要

#include <ctype.h> 

確保isdigit可不管執行標準庫的。

+0

失敗對於以下數字:4,୬,1,9 – Bill 2010-02-26 21:01:06

+0

@Bill當然,但該示例是基於ascii數字要求的假設。我鏈接的頁面解釋瞭解決方案,如果程序員需要本地特定的數字,我不能再猜測程序員的要求。 – Yacoby 2010-02-26 23:52:33

+1

我理解你的假設,我只是沒有看到原始問題中的任何內容來證明它們的正確性。 – Bill 2010-03-01 19:48:14

0

使用isdigit

if (isdigit(s.at(10)) { 
    ... 
} 
5

下面將告訴你:

isdigit(s.at(10)) 

將解析爲 '真',如果在10位字符是一個數字。

您需要包含< ctype>。

+0

我不需要包含ctype,它仍然有效。 – neuromancer 2010-02-26 10:17:59

+5

在C++中,實現可能會設置它們的標頭,使得一個標頭包含另一個標頭。 'std :: string'需要''這可能很好地在''帶來了你的執行。這是巧合;你不能依靠那個。 – MSalters 2010-02-26 10:55:50

0

另一種方法是檢查字符

if (s.at(10) >= '0' && s.at(10) <= '9') 
    // it's a digit 
+0

對於諸如4,୬,1,9等數字,此操作失敗。 std :: isdigit是真實應用程序的更好選擇:http://www.cplusplus.com/reference/std/locale/isdigit/ – Bill 2010-02-26 13:19:39

8

的ASCII值,其他的答案假設你只關心下列字符:0, 1, 2, 3, 4, 5, 6, 7, 8, 9。如果你正在寫,可能在使用其他數字系統語言環境中運行的軟件,那麼你將要使用的新std::isdigit位於<locale>http://www.cplusplus.com/reference/std/locale/isdigit/

然後,你可以識別以下數字爲位數:४, ੬, ൦, ௫, ๓, ໒

相關問題