簡體   English   中英

大於 9 的數字的 C++ char 到 int 轉換

[英]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.

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