我有一个读取信用卡号的程序。我想添加一些东西来确保添加了 16 个数字、没有字母和任意多的空格(尽管它们不计入数字)。是否有一个函数或一组函数可以执行此操作,或者我是否应该制作一堆使用 isdigit() 和 isalpha() 的 while 和 if 循环,一次通过数组一个元素?
char cardNum[32];
cout << "Enter credit card number: ";
cin.getline(cardNum, 32); //Read in the entire line for the name
最佳答案
您可以做很多事情。一种想法是将 std::find_if
与自定义谓词一起使用。例如:
bool IsCharIllegal(char ch)
{
// return true or false based on whatever your exact requirements are
}
然后:
auto itFound = std::find_if(cardNum, cardNum + 32, IsCharIllegal);
if(itFound != cardNum + 32)
// invalid character was entered!
也有使用 std::string
而不是原始 char
数组的情况:
std::string cardNum;
cout << "Enter credit card number: ";
std::cin >> cardNum;
其次是:
auto itFound = std::find_if(cardNum.begin(), cardNum.end(), IsCharIllegal);
if(itFound != cardNum.end())
// invalid character was entered!
这有助于避免神奇的 32
并且还允许输入任何长度。
关于c++ - 如何安排循环来检查数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302854/