簡體   English   中英

測試轉換為int的int字符是否為數字c ++

[英]Test converted int to char if it is number c++

我想知道如何測試字符是否為數字。 一個int值已轉換為char,稍后我要查看此char是否為數字。

int num = 2;
char number = '2';
char num2 = (char)num;
cout << "Non comverted: " << number << " " << num2 << endl;
cout << "comverted: " << static_cast<int>(number) << " " << static_cast<int>(num2) << endl;
if (isdigit(number))
  cout << "number" << endl;
else if (isdigit(num2))
  cout << "num2" << endl;
else cout << "none" << endl;

當我運行此命令時,第二個if也應該能夠與true有關。

之所以要執行此操作,是因為我將許多不同的值存儲到char數組中,並且稍后想知道什么時候是數字。

非常感謝

要將整數從int轉換為ascii / utf8字符,有一個非常簡單的轉換:

char num2 = static_cast<char>('0' + num);

這個:

char num2 = (char)num;

沒有道理。 您正在將2強制轉換為char,這將為您提供STX的ASCII碼,一個特殊字符( http://www.asciitable.com/ )。

您可能想要這樣:

char num2 = '0' + num;

這樣做是給您一個從ASCII'0'開始計數的字符,因此它將最多工作9個字符,之后您將獲得其他字符,如ASCII表所示。

您實際上並沒有將num轉換為數字。 您的第3行基本上導致:

char num2 = (char)2;

十進制值為2的ASCII字符不是數字。 實際上,它是不可打印的。 將一位整數轉換為可打印char的最簡單方法是在其上添加'0'

char num2 = '0' + num;

這是因為字符0ASCII表中的第一位數字,直接后跟1,2,3等。

編輯

正如克里斯蒂安·哈克在評論指出, C ++不要求使用ASCII一個實現 ,雖然它保證了數字09是由連續的整數值來表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM