我想要一个字符串来检查字符串是否包含有效字符或不使用C ++。
有效字符应与
function
一样,如有效字符的字符集:“abc123”。
只包含上面字符集中给出的字符的字符串应为return true
,而后面还包含其他字符的字符串应为return false
。显然这是一项简单的任务:)
- >使用charset abc123
:
string myString_1 = "bbbac1" // should get true
string myString_2 = "bbbac132aacc" // should get true
string myString_3 = "xxxxxx" // should get false
string myString_4 = "bbbac12533cc" // should get false
如何在C ++中实现这样的调用?
注意:我虽然使用类似下面的代码,但我很确定这是一种更好的解决方案。
string charset = "abc123";
string myString = "bbbac1";
for (int i=0; i<charset.length(); i++) {
std::replace( myString.begin(), myString.end(), charset[i], '');
}
bool isValid = (myString.length() == 0);
答案 0 :(得分:1)
AS igor-tandetnik在评论中指出这是std::find_first_not_of
的工作:
auto validate(const std::string& str, const std::string& charset) -> bool
{
return str.find_first_not_of(charset) == std::string::npos;
}
答案 1 :(得分:0)
您可以编写自己的检查功能:
bool checkstring(std::string &checkstring, std::string &legalchars) {
for (char c : checkstring) {
// resetting the bool
bool isLegal = false;
for (char d : legalchars) {
// comparing the chars
if (c == d) { isLegal = true; }
}
// if a non-legal char was found, return false
if (!isLegal) { return false; }
}
// if no non-legal character was found, return true
return true;
}
尽管使用标准库可能有更好的替代方法,特别是如果您需要将非常长的字符串与大量合法字符进行比较。