G'day大家好。
我对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;
}
}
我的问题是:
- 第15-25行似乎没有达到我的预期。事实上,在我看来,当程序运行时,它完全忽略了这一行
- 如果第21行像我想象的那样工作,它还会将005这样的用户id标记为无效。我不知道如何用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 fruitn";
第一个参数是size_t
位置,而第二个参数是要比较的字符数。您也可以简单地输入一个参数,另一个字符串,将整个字符串相互比较。
检查数字
例如,如果您有兴趣检查字符是否为0-9数字,请使用STL的C部分中的isdigit方法。