Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 仅将输入限制为字母表[a-z、a-z、空格、句点]_C++ - Fatal编程技术网

C++ 仅将输入限制为字母表[a-z、a-z、空格、句点]

C++ 仅将输入限制为字母表[a-z、a-z、空格、句点],c++,C++,我试图将用户输入限制为仅限于某些字符[a-z,a-z,空格,句点],我无法正确使用此函数 void setName() { char fname[20]; unsigned int ascii_val; while(ascii_val<65 || ascii_val>90) { cout << "First Name: "; cin.ignore().getline(fname,20);

我试图将用户输入限制为仅限于某些字符[a-z,a-z,空格,句点],我无法正确使用此函数

void setName()
{

    char fname[20];
    unsigned int ascii_val;
    while(ascii_val<65 || ascii_val>90)
    {
        cout << "First Name: ";
        cin.ignore().getline(fname,20);

        for(int i=0; i<sizeof(fname); i++)
        {
            ascii_val = toupper(fname[i]);
            if(ascii_val==32 || ascii_val==46 || ascii_val==0) //Exception to allow SPACE and PERIOD
            {
                ascii_val=65;
            };
            if(ascii_val<65 || ascii_val>90)
            {
                cout << "Only Alphabet [a-z,A-Z,SPACE,DOT] Allowed!\n";
                break;
            }

        }

    }
    newfname = fname;
}
void setName()
{
char-fname[20];
无符号整数ascii值;
while(ascii_val90)
{

这终于奏效了!如果你认为这不是最好的解决方案,请发布你的备选方案

bool charVerify(string word)
{
    for (int i = 0; i < word.size(); i++)
    {
        int character = toupper(word[i]);
        if(character == ' ' || character == '.')
        {
                character='A';
        }
        if (character < 'A' || character > 'Z')
        {
            return false;

        }

    }
    return true;
}

void setFname()
{

    string fname;
    cout << "Enter Name: ";
    getline(std::cin.ignore(),fname);
    while(1)
    {
        if (charVerify(fname))
        {
            break;
        }
        else
        {
            cout << "\tInvalid Input! Only [a-z,A-Z,SPACE,PERIOD]" << endl;

        }
        cin.clear();
        cout << "Enter Name: ";
        getline(std::cin.ignore(),fname);
    }
    firstname = fname;
}
bool charVerify(字符串字)
{
for(int i=0;i'Z')
{
返回false;
}
}
返回true;
}
void setFname()
{
字符串fname;

在继续之前,请先用
'A'
'Z'
替换
65
90
之类的内容。关于
忽略
的注意事项不要将它们扔掉,以防需要忽略某些内容。如果确实需要
忽略
,请将其放在留下不需要字符的IO事务之后在流中。如果您将
忽略
放在其他事务之前,那么您迟早会在流中没有任何垃圾的情况下到达该事务,并体验“Dude,我的
字符在哪里
?”第一手资料。如果你认为任何人的名字,不管是第一个还是其他,都不会超过20个字符,那你就要倒霉了。使用
std::string
而不是原始
char
数组。可能对你有用。警告:in
for(int i=0;i