C++ 一个数组中的Char和Int
我希望在一个数组中包含字符和整数。我想做的是在我的数组中有1到9,用户选择用字母X替换哪个数字。我怎么能做到这一点?我假设我不能将字符传递到称为C++ 一个数组中的Char和Int,c++,c,arrays,char,int,C++,C,Arrays,Char,Int,我希望在一个数组中包含字符和整数。我想做的是在我的数组中有1到9,用户选择用字母X替换哪个数字。我怎么能做到这一点?我假设我不能将字符传递到称为int数组[8]的数组中是否有一种方法将数组中的INTs和字符都包含在一起? > p>在C++ >代码> int s,而 char < /Calp>s > 几乎< /强>同一事物。它们都存储为数字,只是分辨率不同 int array[2]; array[0] = 100; array[1] = 'c'; printf("%d", array[0])
int数组[8]的数组中代码>是否有一种方法将数组中的INTs和字符都包含在一起? > p>在C++ >代码> int <代码> s,而<代码> char < /Calp>s > <强>几乎< /强>同一事物。它们都存储为数字,只是分辨率不同
int array[2];
array[0] = 100;
array[1] = 'c';
printf("%d", array[0]) //Prints the number at index zero.
//Is it %c to print a char?
printf("%c", array[1]) //Prints the number at index zero as it's equivalent char.
< C++ >代码> int S和 char s是<>强>几乎>相同的东西。它们都存储为数字,只是分辨率不同
int array[2];
array[0] = 100;
array[1] = 'c';
printf("%d", array[0]) //Prints the number at index zero.
//Is it %c to print a char?
printf("%c", array[1]) //Prints the number at index zero as it's equivalent char.
为什么不直接使用字符数组呢
你能行
char characters[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}; // last one is NULL terminator
int replace = 1;
cout << "Enter the number you want to replace with X: ";
cin >> replace;
assert(replace > 0 && replace < 10); // or otherwise check validity of input
characters[replace - 1] = 'X';
// print the string
cout << characters;
// if the user entered 5, it would print
// 1234X6789
charcharacters[]={'1','2','3','4','5','6','7','8','9',0};//最后一个是空终止符
int replace=1;
不能更换;
断言(替换>0&&replace<10);//或者检查输入的有效性
字符[替换-1]=“X”;
//打印字符串
你为什么不使用一个字符数组呢
你能行
char characters[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}; // last one is NULL terminator
int replace = 1;
cout << "Enter the number you want to replace with X: ";
cin >> replace;
assert(replace > 0 && replace < 10); // or otherwise check validity of input
characters[replace - 1] = 'X';
// print the string
cout << characters;
// if the user entered 5, it would print
// 1234X6789
charcharacters[]={'1','2','3','4','5','6','7','8','9',0};//最后一个是空终止符
int replace=1;
不能更换;
断言(替换>0&&replace<10);//或者检查输入的有效性
字符[替换-1]=“X”;
//打印字符串
coutA stab in dark,因为用户模型和编程模型之间有很大的区别
当用户在指定索引处“插入”字符时,您希望更新字符数组,而不是在int数组中插入值。将2并排保存。这是一种暗中操作,因为用户模型和编程模型之间有很大的区别
当用户在指定索引处“插入”字符时,您希望更新字符数组,而不是在int数组中插入值。并排维护2。如其他人所述,当您使用char
值分配int[]
数组的元素时,char
将升级为int
。在读取该数组时,必须使用显式强制转换
即,以下工作
int a[10];
char c='X';
a[0] = c;
c = (char) a[0];
但是,
因为您需要跟踪哪些元素包含int,哪些元素包含char,所以这不是一个有吸引力的解决方案
另一个选项是只需要一个字符数组,并将数字0..9存储为字符。即“0”、“1”、“9”
(第三个选项是让另一个变量将索引存储到'X'元素——但这与您的建议大不相同)正如其他人所提到的,当您使用char
值分配int[]
数组的元素时,char
将被提升为int
。在读取该数组时,必须使用显式强制转换
即,以下工作
int a[10];
char c='X';
a[0] = c;
c = (char) a[0];
但是,
因为您需要跟踪哪些元素包含int,哪些元素包含char,所以这不是一个有吸引力的解决方案
另一个选项是只需要一个字符数组,并将数字0..9存储为字符。即“0”、“1”、“9”
(第三种选择是让另一个变量存储“X”元素的索引,但这与您的建议大不相同)您可以将数字视为字符
char mychar[10];
for ( int i = 0; i < 10; ++i )
{
mychar[i] = '0' + i;
}
//Assume you read it
int userInput = 9;
mychar[userInput-1] = 'X';
charmychar[10];
对于(int i=0;i<10;++i)
{
mychar[i]=“0”+i;
}
//假设你读过
int userInput=9;
mychar[userInput-1]=“X”;
您可以将数字视为字符
char mychar[10];
for ( int i = 0; i < 10; ++i )
{
mychar[i] = '0' + i;
}
//Assume you read it
int userInput = 9;
mychar[userInput-1] = 'X';
charmychar[10];
对于(int i=0;i<10;++i)
{
mychar[i]=“0”+i;
}
//假设你读过
int userInput=9;
mychar[userInput-1]=“X”;
最简单的解决方案是使用-1而不是X,前提是数组中没有任何负数。我以前也这样做过。最简单的解决方案是使用-1而不是X,假设数组中没有任何负数。我以前也这样做过。几乎可以肯定有更好的方法来做你想做的事情,尽管我不知道这是什么,因为我不能真正理解你想做什么。我想要一个数字为1到9的数组。当我选择用字母X替换其中一个时,我想将1替换为9。基本上,我如何用特定位置的字母替换具有int的数组。我假设我不能把字符放在一个有INTS的地方。用一个单独的变量来记录用户选择的索引,然后在你的应用程序中的相关位置使用它,这难道不是更有意义吗?你为什么要把这些信息存储在一个地方?几乎肯定有更好的方法来做你想做的事情,尽管我不知道这是什么,因为我不能真正理解你想做什么。我想要一个数字为1到9的数组。当我选择用字母X替换其中一个时,我想将1替换为9。基本上,我如何用特定位置的字母替换具有int的数组。我假设我不能把字符放在一个有INTS的地方。用一个单独的变量来记录用户选择的索引,然后在你的应用程序中的相关位置使用它,这难道不是更有意义吗?是否有任何理由让您将此信息存储在一个位置?转换为char
是毫无意义的;由于printf
是一个可变函数,它将被提升回int
。我有一个forloop,在char数组中添加1到9,但当我打印它时,我得到的图像很少,而不是数字。除此之外,varargs函数不接收小于int
的整数类型。Oli和Ben,cast将消失。这是因为数字1到9并不代表可打印字符。以存储数字65+为例instead@mystycs:那些是查拉