我正在制作基本信息输入功能。此函数稍后将用于获取信息并存储在磁盘上。 我做了两张支票。 is_alpha和is_digit。 is_alpha的问题是,它返回" 0"如果它检测到空白区域(这不是我想要的)。我正在为" Name"显然它可以包含空格! 你能否告诉我如何制作一个检查我的char数组的方法,如果它是一个名字? (字母和空格)
class Bankaccount
{
protected:
int id;
char name[50];
char address[100];
char phone_no[50];
static int count;
public:
Bankaccount()
{
count++;
id = count;
}
bool is_number(const std::string& s)
{
std::string::const_iterator it = s.begin();
while (it != s.end() && std::isdigit(*it)) ++it;
return !s.empty() && it == s.end();
}
bool is_alpha(const std::string& s)
{
std::string::const_iterator it = s.begin();
while (it != s.end() && std::isdigit(*it)) ++it;
{cin.ignore(); return !s.empty() && it == s.end();}
}
void basics ()
{system("cls");
cout << "Enter Name (Letters only): " << endl;
cin.ignore();
cin.getline(name,50);
{cout << "Enter Address: " << endl;
cin.ignore();
cin.getline(address,100);
cout << "Enter Phone Number (Digits only): " << endl;
cin.ignore();
cin.getline(phone_no,50);
//CHECK FOR DIGITS ONLY
bool temp=0;
temp=is_number(phone_no);
{while(temp!=1)
{cout << "ReEnter Phone Number: " << endl;
cin.ignore();
cin.getline(phone_no,50);
temp=is_number(phone_no);
}
}//while ends
}
{cout << "ReEnter Name: " << endl;
cin.ignore();
cin.getline(phone_no,50);
cout << "Enter Address: " << endl;
cin.ignore();
cin.getline(address,100);
cout << "Enter Phone Number (Digits only): " << endl;
cin.ignore();
cin.getline(phone_no,50);
//CHECK FOR DIGITS ONLY
bool temp;
temp=is_number(phone_no);
if (temp==1)
{}
else {cout << "ReEnter Phone Number: " << endl;
cin.ignore();
cin.getline(phone_no,50);
}
}
}
答案 0 :(得分:0)
我相信你知道c ++有isalpha(char)的内置STL函数。
所以你需要做的是对空格或字母(对于名称)进行检查。
请允许我帮助您,请参阅以下代码:
bool isValidName(string word) {
for(int i=0;i<(int)word.length();i++) {
if ((word[i] != ' ') && (!isalpha(word[i])) {
return false;
}
}
return true;
}
请注意,我假设您在标题中声明了以下内容:
using namespace std;
如果没有那么你必须在任何std相关的东西前写std ::。例如std::string
。
只需将名称传递给上述函数的参数,就可以了。
希望它有所帮助!