gpt4 book ai didi

c++ - 如何有效地检查字符串是否具有 C++ 中的特殊字符?

转载 作者:可可西里 更新时间:2023-11-01 17:04:49 44 4
gpt4 key购买 nike

我正在尝试寻找是否有更好的方法来检查字符串是否包含特殊字符。在我的例子中,除了字母数字和“_”之外的任何东西都被认为是一个特殊字符。目前,我有一个包含特殊字符的字符串,例如 std::string = "!@#$%^&"。然后我使用 std::find_first_of () 算法检查字符串中是否存在任何特殊字符。

我想知道如何基于白名单来做到这一点。我想在字符串中指定小写/大写字符、数字和下划线(我不想列出它们。有什么方法可以指定某种 ascii 范围,例如 [a-zA-Z0-9_] ).我怎样才能做到这一点?然后我打算使用 std::find_first_not_of()。通过这种方式,我可以提及我真正想要的东西并检查相反的东西。

最佳答案

尝试:

std::string  x(/*Load*/);
if (x.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_") != std::string::npos)
{
std::cerr << "Error\n";
}

或者尝试提升正则表达式:

// Note: \w matches any word character `alphanumeric plus "_"`
boost::regex test("\w+", re,boost::regex::perl);
if (!boost::regex_match(x.begin(), x.end(), test)
{
std::cerr << "Error\n";
}

// The equivalent to \w should be:
boost::regex test("[A-Za-z0-9_]+", re,boost::regex::perl);

关于c++ - 如何有效地检查字符串是否具有 C++ 中的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605282/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com