验证字符串是否只包含C ++中的字母

时间:2015-11-04 21:41:47

标签: c++ string validation

我只使用C#找到了有关此主题的信息,而我正在使用C ++。 希望你能帮助我。

我的代码:

#include <iostream>
#include <fstream>  // Librería para el manejo de archivos
#include <string>   // Librería para el manejo de strings
#include <stdlib.h> // Librería para el uso de system("cls");

int main()
{
    //Variables
    string NombreJugador;

/*  Content
------------------------------------------------------------------------*/
    do
    {
        cout << "Your name: ";
        cin >> NombreJugador;
    } while(ValidarNombreJugador(NombreJugador));

    return 0;
}

/*  Function
------------------------------------------------------------------------*/
int ValidarNombreJugador(string NombreJugador)
{
    int Numero;

    Numero = atoi(NombreJugador.c_str());

    if (Numero!=0)
    {
        cout << "No puede ingresar numeros, solo letras." << endl;
        return 1;
    }

    else
    {
        cout << "Perfecto, tu nombre no tiene numeros." << endl;
        return 0;
    }
}

我在Google上发现这种方式可以验证该名称只包含字母而非数字。

问题是,如果输入“0”,它会将其识别为字母,均值,则返回true。

如何正确验证字符串是否只有字母而不是数字?

顺便说一句,我是新用的。

1 个答案:

答案 0 :(得分:6)

没有数字:

if(std::none_of(str.begin(), str.end(), [](unsigned char c){return std::isdigit(c);})) {
    // stuff
}

所有信件:

if(std::all_of(str.begin(), str.end(), [](unsigned char c){return std::isalpha(c);})) {
    // stuff
}