如何在C ++中将整数转换为字符

4

假设我有一个整数,并且我想将它转换为字符,有哪些可用的方法或者我应该在C++中使用什么方法?例如,参考下面给出的代码

      #include <bits/stdc++.h>
      using namespace std;
      int main
        {
            int i = 1;
           // Say I want to convert 1 to a char  '1';
           // How do I achieve the following in C++
        }

只需执行 1 + '0' - mediocrevegetable1
char c = '0' + i; - Eljay
1
为什么要使用rcpp标签?并且永远不要包含<bits/stdc++.h>。此外,对于简单的示例,可能可以接受,但是using namespace std;一个不好的习惯 - Some programmer dude
关于您的问题,C++规范规定所有数字必须连续编码。也就是说,'2'必须比'1'大一,而'1'又必须比'0'大一。由此可以推断出,可以使用简单的算术(加法和减法)从数字转换为相应的字符,或者反过来。 - Some programmer dude
顺便提一下,数字的“连续性”仅适用于数字本身。它不能可靠或可移植地用于其他任何内容。 - Some programmer dude
同意@Someprogrammerdude的观点,将删除rcpp标签。此外,还有一些值得阅读的C++ FAQ文档。 - Dirk Eddelbuettel
3个回答

4
char c = digit + '0' ;

它将完成您的工作。


0
你可以使用数组,这应该很容易理解:
if (i >= 0 && i <= 9) {
    char digits[] = "0123456789";
    char c = digits[i];

或者你可以使用加法,它稍微难以理解。它依赖于(保证的)细节,即数字符号在字符编码中是连续的

if (i >= 0 && i <= 9) {
    char c = i + '0';

“连续性”实际上是C++规范所要求的。 - Some programmer dude
@Someprogrammerdude 的确如此。但这并不一定是直观的。 - eerorika
断言与“if”语句相同的条件?你一定是在使用一些非常糟糕的编译器。 <g> - Pete Becker
@PeteBecker 不,我只是改变了主意,用 if 替换了 assert,但第二个代码片段上犯了个错误。 - eerorika

-1

嗯,这个问题是关于将整数转换为字符,而不是将字符串转换为整数。 - Pete Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接