2011-10-23 62 views
-2

编译此上Codepad转换char类型的阵列划分为整数变量

#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 
} 

给出:

Line 4: error: '::main' must return 'int' compilation terminated due to -Wfatal-errors.

例如:

比方说ch[0]='5'ch[1]='3'

什么我是否需要这样做,我可以做ch [0] - ch [1] = 2并存储到一个int值

回答

0

您发布的代码有几个不同的问题。 main需要返回类型int

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

您对cin.getline电话将只填写你声明数组中的单个字符,因为函数调用将空终止数组。您需要

char array[3]; 

cin.getline(array, 3); 

之后,如果array[0]包含 '5' 和array[1]包含 '3',你可以简单地做

array[0] - array[1] 

得到整数结果2

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

+0

谢谢,现在我明白了。我忘记了数组中最后一个索引位置包含null –

1

你根本不用做任何事情。 int x = ch[0] - ch[1]的工作方式与您预期的完全相同。

1

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

但是,您的问题的解决方案:ch [0] - ch [1]。

为什么它有效?

Ascii码 '0' 是字符48. Ascii码 '9' 是字符48 + 9

现在

....

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

+0

好吧,我得到它的工作。我使用getline似乎给我的问题,但我用cin.get(),它的作品就像一个魅力。谢谢 –

+0

问题也是48使用ASCII。如果我多重或添加的值完全不符合它的假设。 –

+0

然后你可以做(​​ch [0] - '0')*(ch [1] - '0'),例如 –