c++ - cin - 读取加/减为 char

标签 c++ input cin

我的程序输入有问题。它应该输入一个数学表达式,例如(x + 3 + ax - 5)。所有项目都由一个空白分隔。

我处理这个问题的方式:首先我尝试用 cin >> number 读取一个整数。如果失败,我会尝试读取一个字符数组。然后我检查这是否是一个运算符 (+,-,*,/,( or )) - 如果不是,那么这一定是一个变量。

我遇到的问题是加号和减号。 cin 在读取整数时似乎不会在读取 + 或 - 时打印错误。有什么方法可以按照我的意图进行这项工作吗? 在此先感谢,这是我的代码片段:

int number; char * signs = new char[3]; char signsBeginning[3] = "aa"; 
signs = signsBeginning;
while(#endexpression){ 
     cin >> number;
     if(!cin){
       //not a number
       cin.clear();
       cin >> signs;
       //handling the input
     }else{
       //number
     }
}

编辑:忘记添加:我不能使用字符串。

最佳答案

是否可以只使用 std::getline() 读取整个字符串,然后对其进行解析?

std::string line;
std::getline(std::cin, line);

// Parse the read line ...

关于c++ - cin - 读取加/减为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940607/

相关文章:

javascript - Jquery - 在没有直接输入的情况下从多个输入字段中获取总数

python - 模拟linux键盘输入

css - 如何使不可见的文本输入框在悬停时可见?

c++ - 时间格式 hh :mm:ss input

c++ 如何修复 std::cin 错误或解决它

c++ - 使用析构函数的问题

c++ - 如何在 Visual Studio 2017 中为 Windows XP 编译代码

c++ - 为什么我的(重新)实现 strlen 是错误的?

c++ - 在再次读取 `std::cin` 之前如何清除它的内容?

c++ - 为什么这段代码有不同的输出?