我有
int i = 6;
而且我要
char c = '6'
通过转换。有什么简单的建议吗?
编辑: 我也需要生成一个随机数,并将其转换为char,然后添加“ .txt”并在ifstream中访问它。
Answers:
简单的方法:
char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];
更安全的方法:
char aChar = '0' + i;
通用方式:
itoa(i, ...)
方便的方式:
sprintf(myString, "%d", i)
C ++方式:(取自Dave18答案)
std::ostringstream oss;
oss << 6;
上司方式:
乔,给我写一个int到char转换器
Studboss方式:
char aChar ='6';
乔的方式:
char aChar ='6'; // int i = 6;
美国航空航天局的方式:
//正在等待卫星回复...
外星人的方式:“ 9”
//问候。
神的方式:
布鲁,我建造了
彼得潘的方式:
char aChar;
switch (i)
{
case 0:
aChar = '0';
break;
case 1:
aChar = '1';
break;
case 2:
aChar = '2';
break;
case 3:
aChar = '3';
break;
case 4:
aChar = '4';
break;
case 5:
aChar = '5';
break;
case 6:
aChar = '6';
break;
case 7:
aChar = '7';
break;
case 8:
aChar = '8';
break;
case 9:
aChar = '9';
break;
default:
aChar = '?';
break;
}
圣诞老人的方式:
//Wait till Christmas!
sleep(457347347);
重力的方式:
//什么
'6'(Jersey)Mikes'™方式:
//
所以方式:
伙计们,如何避免阅读C ++入门指南?
我的方式:
或高速公路。
评论:我已经添加了Handy方式和C ++方式(具有完整的集合),并将其保存为Wiki。
编辑:满意吗?
这仅适用于整数0-9,但您的问题似乎表明可能就足够了。
它通过将char的ASCII值添加'0'
到整数位数来工作。
int i=6;
char c = '0'+i; // now c is '6'
例如:
'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'
编辑
不清楚您的意思是“为字母工作”吗?如果您想要字母表的第5个字母:
int i=5;
char c = 'A'-1 + i; // c is now 'E', the 5th letter.
请注意,因为在C / Ascii中,A被认为是字母的第0个字母,所以我做了一个负-1来补偿通常理解的第5个字母的含义。
根据您的具体情况进行调整。
(和测试-测试-测试!您编写的任何代码)
仅供参考,如果您想要多个位数,则可以使用sprintf:
char txt[16];
int myNum = 20;
sprintf(txt, "%d", myNum);
然后,第一个数字位于txt [0]中的char中,依此类推。
(这是C方法,而不是C ++方法。C++方法将是使用字符串流。)
snprintf
在sprintf
(考虑128个的整数或任何一个假设的系统)。无论如何,+ 1是一种不会破坏数字不连续的字符集的方法。
我的工作方式是:
char to int
char var;
cout<<(int)var-48;
int to char
int var;
cout<<(char)(var|48);
我编写这些函数进行转换:
int char2int(char *szBroj){
int counter=0;
int results=0;
while(1){
if(szBroj[counter]=='\0'){
break;
}else{
results*=10;
results+=(int)szBroj[counter]-48;
counter++;
}
}
return results;
}
char * int2char(int iNumber){
int iNumbersCount=0;
int iTmpNum=iNumber;
while(iTmpNum){
iTmpNum/=10;
iNumbersCount++;
}
char *buffer=new char[iNumbersCount+1];
for(int i=iNumbersCount-1;i>=0;i--){
buffer[i]=(char)((iNumber%10)|48);
iNumber/=10;
}
buffer[iNumbersCount]='\0';
return buffer;
}
itoa
(用于非标准MS功能)以及链接到C和C ++ [mis]信息的最差站点都可以。
我想
std::to_string(i)
可以完成工作,它是一个重载函数,可以是任何数字类型,例如int,double或float
替代方法,但是不标准。
int i = 6;
char c[2];
char *str = NULL;
if (_itoa_s(i, c, 2, 10) == 0)
str = c;
或使用标准c ++字符串流
std::ostringstream oss;
oss << 6;
'oss'
:)
在上大学时,我收集了发现的数据并给出了以下结果:
“输入由带有多个整数的单行组成,并由空格分隔。条目的末尾由数字-1标识,不应处理该数字。”
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
char numeros[100]; //vetor para armazenar a entrada dos numeros a serem convertidos
int count = 0, soma = 0;
cin.getline(numeros, 100);
system("cls"); // limpa a tela
for(int i = 0; i < 100; i++)
{
if (numeros[i] == '-') // condicao de existencia do for
i = 100;
else
{
if(numeros[i] == ' ') // condicao que ao encontrar um espaco manda o resultado dos dados lidos e zera a contagem
{
if(count == 2) // se contegem for 2 divide por 10 por nao ter casa da centena
soma = soma / 10;
if(count == 1) // se contagem for 1 divide por 100 por nao ter casa da dezena
soma = soma / 100;
cout << (char)soma; // saida das letras do codigo ascii
count = 0;
}
else
{
count ++; // contagem aumenta para saber se o numero esta na centena/dezena ou unitaria
if(count == 1)
soma = ('0' - numeros[i]) * -100; // a ideia é que o resultado de '0' - 'x' = -x (um numero inteiro)
if(count == 2)
soma = soma + ('0' - numeros[i]) * -10; // todos multiplicam por -1 para retornar um valor positivo
if(count == 3)
soma = soma + ('0' - numeros[i]) * -1; /* caso pense em entrada de valores na casa do milhar, deve-se alterar esses 3 if´s
alem de adicionar mais um para a casa do milhar. */
}
}
}
return 0;
}
评论是葡萄牙语,但我认为您应该理解。如有任何疑问,请给我发送有关linkedin的消息:https : //www.linkedin.com/in/marcosfreitasds/
A PROGRAM TO CONVERT INT INTO ASCII.
#include<stdio.h>
#include<string.h>
#include<conio.h>
char data[1000]= {' '}; /*thing in the bracket is optional*/
char data1[1000]={' '};
int val, a;
char varray [9];
void binary (int digit)
{
if(digit==0)
val=48;
if(digit==1)
val=49;
if(digit==2)
val=50;
if(digit==3)
val=51;
if(digit==4)
val=52;
if(digit==5)
val=53;
if(digit==6)
val=54;
if(digit==7)
val=55;
if(digit==8)
val=56;
if(digit==9)
val=57;
a=0;
while(val!=0)
{
if(val%2==0)
{
varray[a]= '0';
}
else
varray[a]='1';
val=val/2;
a++;
}
while(a!=7)
{
varray[a]='0';
a++;
}
varray [8] = NULL;
strrev (varray);
strcpy (data1,varray);
strcat (data1,data);
strcpy (data,data1);
}
void main()
{
int num;
clrscr();
printf("enter number\n");
scanf("%d",&num);
if(num==0)
binary(0);
else
while(num>0)
{
binary(num%10);
num=num/10;
}
puts(data);
getch();
}
我检查了我的编码及其工作是否正常。如果有用,请告诉我。谢谢。