如何检查存储在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
我应该使用正则表达式吗?如果是这样,我应该如何有效地使用它?
答案 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 检查输入是否正确
如果只有数字,您也可以使用自己的功能检查姓名的每个角色。