std :: cin跳过字符(输入1 + 2 + 3 + 4 ...)

时间:2017-05-28 18:29:55

标签: c++

我有一个问题。当我的节目输入为1 + 2 + 3 + 4 + 5 ... std :: cin跳过' +' es,我不能将它们存储在任何地方(让我们说它的' - '或者' *'或' /')。我想制作一个计算器。我和#39;给出一个更小的代码示例我的意思。希望有人能够向我解释。谢谢你    `

double values;
    char operations;
    while (true) {
        if (std::cin >> values) {
            std::cout << values;
            continue;
        }
        else {
            std::cin.clear();
            std::cin >> operations;
            std::cout << operations;
        }
    }

` 例如,当输入为1 + 2 + 3 + 4 + 5(一行写入)时,输出为12345,它应为1 + 2 + 3 + 4 + 5.程序永远不会执行if的else部分。我继续使用那里,因为在&#34;更大&#34;这个版本我必须返回一个值或操作的对象。

3 个答案:

答案 0 :(得分:0)

字符(例如&#39; +&#39;)不能存储在double类型的变量中。因此他们被扔掉了。如果你想要获得整行,你需要使用std :: string。

然后,如果您正在构建计算器,则需要遍历字符串并将其组件分离为更小的子组件并相应地计算它们。

答案 1 :(得分:-1)

由于循环永远不会结束,因此必须显示运行时错误消息。你也应该使用char变量并添加其他

if(cin>>ch) cout<<ch else  break 

语句。

答案 2 :(得分:-1)

您可以尝试获取该行:

std::string line;

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