我希望在一个数组中包含字符和整数。我想要做的是在我的数组中有1到9,用户选择用字母X替换哪个数字。我怎么能这样做?我假设我不能将字符传递给一个被称为int array[8];
的数组。所以有没有办法在数组中同时包含整数和字符?
答案 0 :(得分:4)
在c ++中,int
和char
的几乎相同。它们都以数字形式存储,只是具有不同的分辨率。
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.
答案 1 :(得分:3)
为什么不用一个字符数组?
你可以做到
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
答案 2 :(得分:0)
在黑暗中捅,因为用户模型和编程模型之间存在很大差异。
当用户在指定索引处“插入”字符时,您希望更新char数组,而不是在int数组中插入值。保持2并排。
答案 3 :(得分:0)
正如其他人所提到的,当您为char
数组的元素分配int
值时,int[]
将被提升为char
。当你从那个数组中读取时,你必须使用一个显式的强制转换。
即,以下作品
int a[10];
char c='X';
a[0] = c;
c = (char) a[0];
然而,
由于您需要跟踪哪些元素包含整数以及哪些元素包含字符 - 这不是一个有吸引力的解决方案。
另一个选项是只有一个char
数组,并将数字0..9存储为字符。即,'0','1',..'9'。
(第三个选项是让另一个变量将索引存储到'X'元素 - 但这与你建议的非常不同)
答案 4 :(得分:0)
您可以将您的号码视为字符
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';
答案 5 :(得分:0)
最简单的解决方案是使用-1而不是X,假设您的数组没有任何负数。我以前做过。