96

我有

整数i=6;

我想要

char c=“6”

通过转换。有什么简单的建议吗?

编辑:我还需要生成一个随机数,并转换为一个字符,然后添加一个“.txt”并在ifstream中访问它。

0

11答案11

重置为默认值
408

直接方式:

字符数字[]={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”};char aChar=数字[i];

更安全的方式:

char aChar=“0”+i;

通用方式:

伊塔(i,…)

便捷方式:

sprintf(myString,“%d”,i)

C++方式:(摘自Dave18的回答)

std::ostingstream oss;oss<<6;

老板的方式:

乔,给我写一个int到char的转换器

Studboss方式:

char aChar=“6”;

乔的方式:

char aChar=“6”//整数i=6;

美国宇航局的方式:

//正在等待卫星的答复。。。

外星人的方式:“9”

//问候。

上帝的方式:

Bruh是我做的

彼得·潘的方式:

炭-炭;开关(i){案例0:aChar=“0”;断裂;案例1:aChar=“1”;断裂;案例2:aChar='2';断裂;案例3:aChar='3';断裂;情况4:aChar='4';断裂;案例5:aChar='5';断裂;案例6:aChar='6';断裂;案例7:aChar='7';断裂;案例8:aChar='8';断裂;案例9:aChar='9';断裂;违约:aChar='?';断裂;}

圣诞老人的方式:

//等到圣诞节!睡眠(457347347);

重力方式:

//什么

'6'(泽西岛)Mikes'™方式:

//

SO方式:

伙计们,我该如何避免阅读C++初学者指南?

我的方式:

或高速公路。

注释:我添加了Handy方式和C++方式(以获得完整的集合),并将其保存为wiki。

编辑:满意吗?

13
  • 16
    你在supervisor中指的是“老板”,但我在“老板”中读的是“布鲁斯·斯普林斯汀是老板“也许你可以为那个案子修改一下?
    – 用户67416
    评论 2013年5月1日18:10
  • 8
    关于乔的方式?还是美国宇航局的方式?还是外星人的方式?还是上帝的方式?还是彼得·潘的方式?圣诞老人的方式如何?还是重力的方式?你应该列一个清单吗?也许检查两次,以防漏掉什么? 评论 2016年6月26日22:01
  • 2
    @使用Mikes Way™可以实现抽象不谐和。。。我喜欢一些泽西米克斯。
    – 第88页
    评论 2016年8月1日20:01
  • 1
    这让我笑得很厉害。 评论 2018年9月19日17:40
  • 1
    这必须是SO xD的最佳答案
    – 塞斯
    评论 2020年6月10日3:10
37

这只适用于整数0-9,但您的问题似乎表明这可能就足够了。

它通过添加字符的ASCII值来工作'0'到整数位。

整数i=6;char c=“0”+i;//现在c是'6'

例如:

'0'+0 = '0''0'+1 = '1''0'+2 = '2''0'+3 = '3'

编辑

不清楚你的意思,“为字母工作”?如果您想要字母表中的第5个字母:

整数i=5;char c='A'-1+i;//c现在是“E”,第5个字母。

注意,因为在C/Ascii中,A被视为第0个字母在字母表中,我做了一个减号,以弥补第五个字母通常被理解的含义。

根据您的具体情况进行适当调整。
(和测试-测试-测试!您编写的任何代码)

2
  • 在选择小写字母和大写字母时感到困惑。 评论 2011年1月7日19:00
  • 4
    好吧,你需要告诉我们你想要什么。“为字母表工作”并不是很有描述性。 评论 2011年1月7日19:06
16

仅供参考,如果你想要的数字不止一位数,你可以使用sprintf:

字符文本[16];int myNum=20;sprintf(txt,“%d”,myNum);

然后第一个数字是txt[0]的字符,依此类推。

(这是C方法,而不是C++方法。C++方法是使用字符串流。)

  • 总是喜欢snprintf(打印)结束把格式数据写成串(考虑一个具有128位int或其他值的假设系统)+无论如何,对于一种不会在数字不连续的字符集中中断的方法,该值为1。
    – 标记B
    评论 2011年1月7日19:24
  • 2
    @标记B:标准C要求数字是连续的。 评论 2011年1月7日20:24
  • @Mark Right,从缓冲区溢出的角度来看,这绝对更安全。 评论 2011年1月7日21:04
5

这就是我如何将数字转换为ASCII码的方法
十六进制代码中的0到9是0x30-0x39
6将为0x36

无符号int temp=6;//或者可以使用'unsigned char temp=6;无符号字符数;num=0x30 |温度;

这将为您提供6的ASCII值。你对0-9也这样做

为了将ASCII转换为数值,我想出了以下代码

无符号字符数,代码;代码=0x39;//十六进制9的ASCII码num=0&0 F&code;
4

我做这项工作的方法是:

char到int字符变量;cout<<(int)var-48;int到char整数变量;cout<<(char)(var|48);

我为转换编写了以下函数:

int char2int(char*szBroj){int计数器=0;int结果=0;而(1){if(szBroj[counter]=='\0'){断裂;}其他{结果*=10;结果+=(int)szBroj[counter]-48;计数器++;}}回报结果;}char*int2char(int iNumber){int iNumbersCount=0;int iTmpNum=iNumber;同时(iTmpNum){iTmpNum/=10;iNumbersCount++;}char*buffer=新字符[iNumbersCount+1];对于(int i=iNumbersCount-1;i>=0;i--){缓冲区[i]=(字符)((iNumber%10)|48);i数字/=10;}buffer[iNumbersCount]=“\0”;返回缓冲区;}
2

itoa()

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

8
  • 与abelenky建议的字符算法相比,我更喜欢这种方法,因为它不依赖于使用ASCII字符集(尽管对于许多应用程序来说这是一个相当安全的假设)。然而,itoa将其结果存储在字符串中,因此您需要提供一个字符数组并从中提取字符。如果您编辑它来显示这些额外的步骤,您的答案对新手会更有帮助。
    – A.利维
    评论 2011年1月7日18:56
  • 5
    -1两者都适用于国际原子能机构(非标准MS函数)并用于链接到最差的C和C++[mis]信息的站点。 评论 2011年1月7日19:00
  • C++中的“标准”方式是使用流,到目前为止提到的所有其他方法都存在一些问题。 评论 2011年1月7日19:46
  • @回复:对不起,你能把最好的那么c和c++的站点呢?
    – 新手
    评论 2011年1月7日21:07
  • 5
    那么,与cplusplus.com相比,它就逊色了
    – 新手
    评论 2011年1月8日17:37
2

我想是吧

标准::to_string(i)

它是一个重载函数,可以是任何数字类型,例如int、double或float

1
  • 2
    例如,char c=to_string(9)[0];
    – 冰海
    评论 2017年4月1日5:42
0

“我有int I=6;我想通过转换得到char c='6'。有什么简单的建议吗?”

只有10个数字。因此,编写一个函数,从0-9中获取一个int并返回ascii代码。只需在ascii表中查找它,并用ifs或select-case编写一个函数。

0

替代方式,但非标准。

整数i=6;字符c[2];char*str=空;如果(_itoas(i,c,2,10)==0)str=c;

或使用标准c++字符串流

std::ostingstream oss;oss<<6;
  • itoa不标准且不安全(可能导致缓冲区溢出)。 评论 2011年1月7日19:07
  • 好的,您现在已经将其编辑为_s版本了。仍然不标准,但我删除了我的反对票! 评论 2011年1月7日19:15
  • 正确的!我输入了错误的对象名称,应该是'oss'(操作系统):)
    – cpx公司
    评论 2011年1月7日21:41
0

在做大学工作时,我收集了我发现的数据,并给出了以下结果:

输入由一行多个整数组成,由空格分隔。条目的末尾由数字-1标识,不应进行处理

#包括<iostream>#包含<cstdlib>使用命名空间标准;整型main(){字符数字[100]//兽医para armazenar a entrada dos numeros a serem convertidosint计数=0,soma=0;cin.getline(数字,100);系统(“cls”);//limpa tela公司对于(int i=0;i<100;i++){如果(numeros[i]=='-')//条件不存在i=100;其他的{if(numeros[i]=='')//conditcao que ao encontra um espaco manda o resultado dos dados lidos e zera contagem{if(count==2)//将2的contegem除以10的por nao ter casa da centenasoma=soma/10;如果(count==1)//se contagem for 1除以por 100 por nao ter casa da dezena索马=索马/100;cout<<(char)soma;//赛达达斯·莱特拉斯(saida das letras do codigo ascii)计数=0;}其他的{count++;//contagem aumenta para saber se o numero esta na centena/dezena ou unitaria公司如果(计数==1)soma=('0'-数字[i])*-100;//“0”-“x”=-x(um numero inteiro)结果的表意如果(计数==2)soma=soma+('0'-数字[i])*-10;//todos乘数por-1 para retornar um valor positvo如果(计数==3)soma=soma+('0'-数字[i])*-1;/*caso pense em entrada de valores na casa do milhar,deve-se alterar esses 3如果是这是一个家庭*/}}}返回0;}

评论是葡萄牙语的,但我认为你应该理解。如有任何问题,请在linkedin上向我发送消息:https://www.linkedin.com/in/marcosfreitasds网址/

1
  • 1
    如果你或其他人能翻译这些评论,那就太好了! 评论 2019年11月14日19:17
-4
将INT转换为ASCII的程序。#包括<stdio.h>#包括<string.h>#包括<conio.h>字符数据[1000]={''}/*括号里的东西是可选的*/字符数据1[1000]={''};int val,a;char varray[9];void二进制(int位){if(数字==0)val=48;if(数字==1)val=49;如果(数字==2)val=50;if(数字==3)val=51;if(数字==4)val=52;if(数字==5)val=53;if(数字==6)val=54;if(数字==7)val=55;if(数字==8)val=56;if(数字==9)val=57;a=0;while(val!=0){if(值%2==0){varray[a]=“0”;}其他的varray[a]='1';val=val/2;a++;}而(a!=7){varray[a]='0';a++;}varray[8]=空;strrev(varray);strcpy(数据1,varray);strcat(数据1,数据);strcpy(数据,data1);}空main(){整数;clrscr();printf(“输入数字”);扫描(“%d”,&num);如果(num==0)二进制(0);其他的而(数量>0){二进制(num%10);num=数/10;}看跌(数据);获取();}

我检查了我的代码和它的工作情况。让我知道它是否有用。谢谢。

1
  • 1
    你可以做缩进。。。并仔细考虑代码中的其他问题。
    – 哈珀
    评论 2013年5月31日15:27

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.