[英]C++ char to int conversion for numbers greater than 9
我正在嘗試在 C++ 中將字符數值轉換為整數。 例如 :
char x ='0';
int intX = x-'0';
這是有效的,但是當我嘗試用大於 10 的數字做同樣的事情時,它嚇壞了。 例如 :
char onuc = '13';
cout<<int(onuc);
輸出是51。
請幫忙謝謝:)
x - '0'
習慣用法僅適用於字符 0 到 9 排列在連續塊中。 (C++ 標准要求這樣做)。
但是'13'
是一個具有實現定義值的多字符常量。 它是一種int
類型,因此您對char
的分配通常是一種有損轉換。 '1' * 256 + '3'
是一個常見的實現。
唉,這種方法行不通,就像
int intX = std::stoi("13");
然而會。
在第二種情況下,您實際要做的是將多字符轉換為 int 類型。 多字符的實現方式與普通字符不同,普通字符只不過是 ascii 代碼。 多字符'13'
將導出為'1'*256+'3'
,即 12592(我相信它取決於編譯器)。
對於更多示例, int('abcd') = 1633837924
計算如下:
'a'*256 3 + 'b'*256 2 + 'c'*256 + 'd'
我希望這個答案對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.