2013-04-26 130 views
0

以下是我的代码。我希望我的程序能够输入输入单词的第一个字符并保存为number1,并将第二个字符保存为number2。但是,我收到一条错误消息。 “转换,从整体类型指针类型要求reinterpret_cast,C样式转换或函数样式转换”cin.get和char错误信息

char number1; 
char number2; 
int all; 

cout << "Enter romans to change to numbers. " << endl; 
n1 = cin.get(); 
n2 = cin.get(); 
+0

假设你将某个时候,很快就会意识到罗马数字可以很容易地由两个以上的字符(或少于两个),是有特殊原因你'不使用'std :: string'和'std :: getline()'? – WhozCraig 2013-04-26 03:49:37

+0

对于练习,我应该只比较两个角色,并添加到跑步总数。这是唯一的原因。 – user2105982 2013-04-26 03:51:02

+0

如果这些是指令,它不会改变使用'std :: string'的适当性。只需在迭代器中遍历字符串时累积总数。 – WhozCraig 2013-04-26 03:53:11

回答

1

没有什么错(语法)的代码,你已经证明,通过完全以下证明自给自足的例子:

#include <iostream> 

int main(){ 
    char n1; 
    char n2; 
    int total; 

    std::cout << "Enter roman numerals to change to numbers." << std::endl; 
    n1 = std::cin.get(); 
    n2 = std::cin.get(); 
    return 0; 
} 

这既编译和运行良好,因此你的问题必须在别处。

你需要更好地注意你的编译器给你的错误信息,特别是行号。然后在该点或其附近检查文件(并向我们展示您是否无法弄清楚)。

这就是那种错误消息我希望看到如果你不小心声明了n1n2变量char *而非char。在这种情况下gcc给我类似的东西到你的状态是什么:

qq.cpp: In function 'int main()': 
qq.cpp:9: error: invalid conversion from 'int' to 'char*' 
qq.cpp:10: error: invalid conversion from 'int' to 'char*'