在c ++中查找函数

时间:2016-05-01 01:47:01

标签: c++

我正在尝试在字符串中找到 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";
      }      
   }

2 个答案:

答案 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将标记为无效。

您可能想要考虑可能的输入变化以及您希望为每种变化做些什么。