如何检查用户输入仅包含字母?

时间:2019-05-17 08:33:23

标签: c++ regex c++14 user-input stdstring

如何检查存储在std::string中的用户输入是否有效,这样它应该只包含所有字母,不能包含数字或符号?

std::string name;
std::cout << "Hello, enter your name:\n";
std::cin >> name;
//check if the name was entered correctly after user input

我应该使用正则表达式吗?如果是这样,我应该如何有效地使用它?

2 个答案:

答案 0 :(得分:2)

  

我应该使用正则表达式吗?

。您不需要这里。

只需使用算法功能 std::all_of 即可检查字符串 std::isalpha 中的所有字母。

std::all_of(std::begin(name), std::end(name),
           [](const char alphabet) noexcept -> bool { return std::isalpha(alphabet); });

完整的示例代码如下:See Live

#include <iostream>
#include <string>
#include <algorithm> // std::all_of
#include <cctype>    // std::isalpha

int main()
{
    std::string name;
    std::cin >> name;
    std::cout << std::boolalpha << std::all_of(std::begin(name), std::end(name),
        [](const char alphabet) noexcept -> bool { return std::isalpha(alphabet); });
    return 0;
}

示例输入iamnumber4

输出false

答案 1 :(得分:0)

您可以使用 std :: regex 检查输入是否正确
如果只有数字,您也可以使用自己的功能检查姓名的每个角色。