大于 9 的数字的 C++ char 到 int 转换

Yas*_*man 1 c++ string int

我正在尝试在 C++ 中将字符数值转换为整数。例如 :

char x ='0';
int intX = x-'0';
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是当我尝试用大于 10 的数字做同样的事情时,它吓坏了。例如 :

char onuc = '13';
cout<<int(onuc);
Run Code Online (Sandbox Code Playgroud)

输出是51。

请帮忙谢谢:)

Bat*_*eba 6

该x - '0'习语仅适用于字符 0 到 9 排列在连续块中的情况。(C++ 标准要求这样做)。

但是'13'是具有实现定义值的多字符常量。它是一种int类型,因此您的分配char通常是有损转换。'1' * 256 + '3'是一个常见的实现。

唉,这种方法行不通,就像

int intX = std::stoi("13");
Run Code Online (Sandbox Code Playgroud)

然而会。