将char类型的数组转换为int变量

时间:2011-10-23 03:33:28

标签: c++

Codepad上编译:

#include <iostream>
using namespace std;

void main (void)
{
    char ch[2];
    int value;
    cout<<"Enter two integers between 0-9"<<endl;
    cin.getline(ch,2);

    //testing with char array
    //(...)
    //how could I do operations like '*', '+', '-', or '/' to the char arrays
}

给出:

  

第4行:错误:':: main'必须返回'int'   由于-Wfatal-errors而导致编译终止。

例如:

让我们说ch[0]='5'ch[1]='3'

我需要做什么,所以我可以执行ch [0] - ch [1] = 2并存储到int值

3 个答案:

答案 0 :(得分:1)

你根本不需要做任何事情。 int x = ch[0] - ch[1]可以像你期望的那样工作。

答案 1 :(得分:1)

我想原来的练习会要求你得到两个不同的整数,每个整数可能超过1个字符。

然而,问题的解决方案:ch [0] - ch [1]。

为什么会这样?

Ascii字符'0'是字符48。 Ascii字符'9'是字符48 + 9

现在...

'4' - '3'=(48 + 4) - (48 + 3)= 4 - 3 = 1.

答案 2 :(得分:0)

您发布的代码存在一些不同的问题。 main需要返回int

int main() { /* .. */ }

您对cin.getline的调用只会填充您声明的数组中的单个字符,因为函数调用将使null终止数组。你需要

char array[3];

cin.getline( array, 3 );

之后,如果array[0]包含'5'而array[1]包含'3',则可以直接执行

array[0] - array[1] 

获取整数结果2。

如果你需要处理[0..9]范围之外的数字,你需要将它们转换为数字表示。这可以使用std::stringtreamatoi完成。