【问题标题】:cin.get and char error messagecin.get 和 char 错误信息
【发布时间】:2013-04-20 03:42:35
【问题描述】:

下面是我的代码。我希望我的程序接收输入单词的第一个字符并保存为 number1 并将第二个字符作为 number2。但是我收到一条错误消息。 "从整数类型转换为指针类型需要 reinterpret_cast、C-style cast 或 function-style cast"

char number1;
char number2;
int all;

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

【问题讨论】:

  • 假设您很快就会意识到罗马数字很容易由两个以上(或少于两个)字符组成,您不使用 std::string 和 @987654323 是否有特定原因@ ?
  • 为了练习,我应该一次只比较两个字符并添加到运行总数中。这是唯一的原因。
  • 如果这些是说明,它不会改变使用std::string 的适当性。当您使用迭代器遍历字符串时,只需累积总数即可。
  • 我应该写代码的方式是明确地使用两个 char 变量和一个 int 变量
  • 错误在哪一行?该代码可以编译,所以它必须在您没有向我们展示的代码中。

标签: c++ visual-c++ char cin


【解决方案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*'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多