Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 一个数组中的Char和Int_C++_C_Arrays_Char_Int - Fatal编程技术网

C++ 一个数组中的Char和Int

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])

我希望在一个数组中包含字符和整数。我想做的是在我的数组中有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]) //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:那些是查拉