我有
int i = 6;
我想要
char c = '6'
通过转换。有什么简单的建议吗?
编辑: 我还需要生成一个随机数,将其转换为char,然后添加一个“.txt”,并在ifstream中访问它。
简单明了的方式:
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;
老板的方式:
乔,编写一个将整数转换为字符的程序。
学霸的方式:
char aChar = '6';
乔的方式:
char aChar = '6'; //int i = 6;
NASA的方式:
//正在等待卫星回应...
外星人的方式:'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™的方法:
//
SO的方法:
伙计们,我该如何避免阅读 C++ 初学者指南?
我的方法:
要么按我的方式去做,要么滚蛋。
评论:我添加了 Handy way 和 C++ way(以便拥有完整的收藏),我将其保存为 wiki。
编辑:满意了吗?
这只适用于数字0-9,但你的问题似乎表明这可能已经足够。
它的工作原理是将字符'0'
的ASCII值加到整数数字上。
int i=6;
char c = '0'+i; // now c is '6'
例如:'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'
编辑
不太清楚你的意思,“work for alphabets”是什么意思? 如果你想要字母表中的第五个字母:
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]的字符中,以此类推。
(这是C语言的方法,而不是C++方法。C++方法是使用stringstreams)
snprintf
而不是sprintf
(考虑一个假设的系统,其整数长度为128位或其他长度)。如果在数字字符集不连续的情况下仍然能够正常工作,则额外加1分。 - Mark Bunsigned int temp = 6;
or you can use unsigned char temp = 6;
unsigned char num;
num = 0x30| temp;
这将为您提供数字6的ASCII值。您可以对0-9执行相同的操作。
要将ASCII转换为数字值,我想出了以下代码。
unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;
我的做法是:
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;
}
我想
std::to_string(i)
这个函数可以完成工作,它是一个重载函数,可以是任何数字类型,例如int、double或float。
itoa
(非标准的MS函数)和链接到可能是C和C ++ [误导性]信息最糟糕的网站而言,两者都不能接受。 - R.. GitHub STOP HELPING ICE另一种方式,但是非标准的。
int i = 6;
char c[2];
char *str = NULL;
if (_itoa_s(i, c, 2, 10) == 0)
str = c;
或者使用标准的C++ stringstream
std::ostringstream oss;
oss << 6;
'oss'
:) - cpx我有一个 int i = 6;,我想通过转换得到 char c = '6'。你有什么简单的建议吗?
数字只有10个。所以编写一个函数,该函数接受0-9之间的整数并返回ASCII代码。只需在ASCII表中查找并编写一个带有ifs或选择情况的函数即可。
在完成大学作业时,我收集了所发现的数据并得出了以下结果:
“输入由多个整数组成的单行数据,以空格分隔。输入以数字-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/