C ++;仅在与预设模式匹配时才接受用户输入

时间:2017-10-08 20:30:52

标签: c++

G'每个人。

我对C ++很陌生,只是玩一些小规模的东西来掌握基础知识。我想创建一个程序,它将从cin获取用户输入,并且当且仅当它与预设模板匹配时打印出来,例如LLL000(因此,3个字母后跟3个数字)。想想健身会员资格,其中用户ID遵循3个字母和3个数字格式。

这是我到目前为止提出的代码

//User ID checking
#include <iostream>
#include <string>
using std::string;


int main()
{
    string letter;
    int number;

    std::cout << "Enter your ID: " << std::endl;
    std::cin >> letter;
    std::cin >> number;

    if (letter.size() <= 0 && letter.size() > 3)
    {
        std::cout << "There must be 3 letters!" << std::endl;
        return 1;
    }
    else if (number < 99 || number >= 1000)
    {
        std::cout << "The number has to be between 100 and 999";
        return 1;
    }
    else
    {
        std::cout << "Your ID is " << letter << number;
        return 0;
    }
}

我的问题是:

  1. 第15-25行似乎没有做我认为会做的事情。事实上,在我看来它在程序运行时完全忽略了这一行
  2. 如果第21行按照我的想法工作,它也会将005之类的用户ID标记为无效。我不知道如何用0来填补这个空白。
  3. 代码实际上没有任何可以尝试与某种格式进行比较的内容,因为我不知道该怎么做。
  4. 我很抱歉,如果这件事非常简单,我只是没有看到,并感谢任何帮助!

    我还想补充一点,我注意到字符串也会接受数字,而不仅仅是字母作为输入,我不知道会发生这种情况。

1 个答案:

答案 0 :(得分:0)

为了比较字符串或字符串的一部分,您希望在C ++中使用STL字符串类的compare方法。这允许您将一个std::string与另一个 std::string str1 ("blue fruit"); std::string str2 ("red fruit"); if (str1.compare(6,5,"fruit") == 0) std::cout << "still, " << str1 << " is a fruit\n"; 进行比较,或者将其与另一个的子串进行比较。

size_t

第一个参数是{{1}}位置,第二个参数是您想要比较的字符数。你也可以简单地输入一个参数,另一个字符串,来比较整个字符串。

检查数字

如果您有兴趣检查char是否为0-9位,请使用STL的C部分中的isdigit方法。