我正在尝试在字符串中找到 char a或char 1 。 如果找不到 ,我的程序会收到错误消息并退出。这是我的功能,但似乎没有用。请帮帮我,谢谢。
*更新,如果字符串是a2,我将收到无效消息,只有当字符串为a1时才会继续。
bool hasAor1(const std::string& string)
{
return string.find_first_of("a1") != std::string::npos;
}
//find valid key, key must have numbers like 1234 instead of 134
void validstring(string key)
{
if(key.length() == 2)
{
hasAor1(key) == false;
cerr << "invalid key";
}
}
答案 0 :(得分:3)
std::find在这里使用会简单得多。
auto iter = find_if(begin(key), end(key),
[](char v){ return v=='a' || v=='1'; });
if (iter == key.end()) cerr << "invalid key";
答案 1 :(得分:1)
函数hasAor1正常。
用&#34; hasAor1(key)== false更改该行;&#39;像
这样的东西if(!hasAor1(key))cerr&lt;&lt; &#34;无效密钥&#34;;
所以
//find valid key, key must have numbers like 1234 instead of 134
void validstring(string key)
{
if(key.length() == 2)
{
if (hasAor1(key) == false)
cerr << "invalid key";
}
}
不清楚validstring应该做什么。如果密钥长度不是2,该怎么办?难道这不会归还一个布尔或其他东西吗?尽管如此,它只会打印一条消息,但前提是密钥长度为2.如果密钥是&#34; 543&#34;那么您想要发生什么?或&#34; 145&#34;或&#34; 1a3&#34;?
代码中的注释&#34; //找到有效密钥,密钥必须包含1234而不是134&#34;没有意义,因为有效密钥的所有例子都包含字符&#39; 1&#39; hasAor1将标记为无效。
您可能想要考虑可能的输入变化以及您希望为每种变化做些什么。