一个数组中的Char和Int

时间:2011-11-07 22:12:38

标签: c++ c arrays char int

我希望在一个数组中包含字符和整数。我想要做的是在我的数组中有1到9,用户选择用字母X替换哪个数字。我怎么能这样做?我假设我不能将字符传递给一个被称为int array[8];的数组。所以有没有办法在数组中同时包含整数和字符?

6 个答案:

答案 0 :(得分:4)

在c ++中,intchar几乎相同。它们都以数字形式存储,只是具有不同的分辨率。

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,假设您的数组没有任何负数。我以前做过。