如何忽略用户输入的任何字符串?

时间:2017-11-02 13:42:12

标签: c++ cin cout

用户应该输入一个double,但是如果他们把一个放入,我怎么能让程序忽略一个字符串或一个char。我当前代码的问题是当我输入一个字符串时,程序将垃圾邮件并填满屏幕与cout<< “矩形的长度是多少”;

double length;

do {
    cout << "What is the length of the rectangle: ";
    cin >> length;
    bString = cin.fail();
} while (bString == true);

3 个答案:

答案 0 :(得分:1)

do {
    cout << "What is the length of the rectangle: ";
    cin >> length;
    bString = cin.fail();
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
} while (bString == true);

这是我发现适用于我的问题的代码。

答案 1 :(得分:0)

cin.fail()不会区分整数和浮点数。

检查的最佳方法是使用std::fmod()函数检查提醒是否大于零。如果它是一个浮点数。

这是代码

#include <cmath>

int main()
{
    double length;
    std::cout <<"What is the length of the rectangle: ";
    std::cin >> length;

    if (std::cin.fail())
    {
        std::cout<<"Wrong Input..."<<std::endl;
    } else 
    {
        double reminder = fmod(length, 1.0);
        if(reminder > 0)
           std::cout<<"Yes its a number with decimals"<<std::endl;
        else
            std::cout<<"Its NOT a decimal number"<<std::endl;
    }
}

请注意,此代码不会区分12和12.0。

答案 2 :(得分:-1)

如果用户输入的数据类型无效,则cin将失败。您可以使用此

进行检查
double length;
while(true)
{
    std::cout << "What is the length of the rectangle: ";
    std::cin >> length;

    if (std::cin.fail())
    {
        std::cout << "Invalid data type...\n";
        std::cin.clear();
        std::cin.ignore();
    }
    else
    {
        break;
    }
}