带+的Cin输入导致下一个输入为字符串

问题描述 投票:2回答:1

所以我对C ++还是很陌生,我正在为我的课做作业。尝试检查输入是字符串还是double / int时遇到问题。所以我做了一个基本程序来测试它

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
    string hi;
    double hello;

    cin >> hello;

    if (!cin)
    {
        //Strings go here

        cin.clear();
        cin >> hi;
        cout << hi << endl;
    }
    else
    {
        cout << hello << endl;
    }

    cout << "Done!" << endl;
}

因此,它基本上可以在输入字母(例如“ j”或“ a”)或数字时使用,但是在输入“ +”或“-”时,它将等待下一个输入,然后将其强制通过字符串块,甚至如果是数字。但是,“ *”或“ /”被读取为字符串,不会引起该问题(我假设是因为它们不是显式运算符)我认为我可能会丢失一些东西。谢谢


编辑:我一次测试单个类型(例如123、1,d,+),而没有混合类型,因此不会有任何包含双精度和字符串的输入

根据用户4581301的建议,我将在一些示例中输入和输出

输入:输出

“” Hello“:” Hello“

123:123

“ /”:“ /”

“ +”(以下输入:2):“ 2”

c++ cin
1个回答
0
投票

问题

您的程序不能完全按预期运行,因为它没有考虑可能消耗但丢失的字符。

© www.soinside.com 2019 - 2024. All rights reserved.