首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将单个字符转换为整型

如何将单个字符转换为整型
EN

Stack Overflow用户
提问于 2009-01-13 16:07:36
回答 11查看 245.9K关注 0票数 65

我有一串数字,例如"123456789",我需要提取每一个数字,以便在计算中使用它们。当然,我可以通过索引访问每个字符,但如何将其转换为int?

我研究过atoi(),但它接受一个字符串作为参数。因此,我必须将每个字符转换为字符串,然后对其调用atoi。有没有更好的方法?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-01-13 16:10:44

您可以利用数字的字符编码都是从48 (对于'0')到57 (对于'9')的顺序。这适用于ASCII、UTF-x和几乎所有其他编码(有关这方面的更多信息,请参阅下面的注释)。

因此,任何数字的整数值都是数字减去'0‘(或48)。

代码语言:javascript
运行
复制
char c = '1';
int i = c - '0'; // i is now equal to 1, not '1'

的同义词

代码语言:javascript
运行
复制
char c = '1';
int i = c - 48; // i is now equal to 1, not '1'

但是,我发现第一个c - '0'的可读性要好得多。

票数 161
EN

Stack Overflow用户

发布于 2010-12-08 22:50:53

代码语言:javascript
运行
复制
#define toDigit(c) (c-'0')
票数 21
EN

Stack Overflow用户

发布于 2009-01-13 17:03:52

或者,您可以使用“正确”方法,类似于最初的atoi方法,但使用std::stringstream。这应该可以使用字符作为输入,也可以使用字符串。(boost::lexical_cast是另一个更方便的语法选项)

(atoi是一个旧的C函数,通常建议在可能的情况下使用更灵活和类型安全的C++等效项。std::stringstream涵盖了字符串之间的转换)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/439573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档