【问题标题】:searching for the times in an array在数组中搜索时间
【发布时间】:2020-08-17 18:59:07
【问题描述】:

那里,我是 C++ 新手, 下面的代码应该输出包含我输入的某个字符的所有项目。 我的意思是,如果我输入 char 'w',它应该输出“two”和“water”,或者当输入 's' 时

结果应该是“sabit”、“sally”和“paris”。 所以我不知道如何修改代码。

#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int main()
{
    char q;
    int i = 0;
    cout << "bir harf gir" << endl;
    cin >> q;
    string ad[] = {"sabit", "two", "sally", "water", 
                   "mike", "alice", "paris", "david", "martin"};

    for (int i = 0; i < 7; i++)
    {
        if (ad[i][0] == q)
        {
            cout << ad[i] << endl;
        }
    }
    return 0;
}

【问题讨论】:

    标签: c++ arrays search character


    【解决方案1】:

    你的意思似乎不是你的 for 循环

    for ( const auto &s : ad )
    {
        if ( s.find( q ) != std::string::npos ) std::cout << s << '\n';
    }
    

    这是一个演示程序。

    #include <iostream>
    #include <string>
    
    int main() 
    {
        std::string ad[] = 
        {
            "sabit", "two", "sally", "water", "mike", "alice", "paris", "david", "martin"
        };
    
        char q = 's';
    
        for ( const auto &s : ad )
        {
            if ( s.find( q ) != std::string::npos ) std::cout << s << '\n';
        }
    
        return 0;
    }
    

    它的输出是

    sabit
    sally
    paris
    

    如果你想遍历的不是所有数组而是它的一部分,那么你可以使用普通的 for 循环来代替基于范围的 for 循环

    for ( std::string::size_type i = 0; i < 7; i++ )
    {
        if ( ad[i].find( q ) != std::string::npos ) std::cout << ad[i] << '\n';
    }
    

    【讨论】:

      【解决方案2】:

      您只检查第一个字符。相反,您可以运行另一个循环来检查所有字符。

      for(int i = 0; i<7; i++)
      {
          for(int j =0; j<ad[i].size(); j++){
              if(ad[i][j]==q){
                  cout<<ad[i]<<endl;
                  break;
              }
          }
      }
      

      虽然有很多其他聪明的方法可以解决这个问题,但我只是按照你的代码风格。

      【讨论】:

        【解决方案3】:
        if(ad[i][0]==q){
           cout<<ad[i]<<endl;
        

        这里只搜索单词的第一个字符。

        下面的代码可以用来解决你的问题。

        #include<iostream>
        #include<string>
        #include<bits/stdc++.h>
        using namespace std;
        
        int main()
        {
        char q;
        cin>>q;
        string ad[]={"sabit","two","sally","water","mike","alice","paris","david","martin"};
        for(int i=0;i<sizeof(ad)/sizeof(ad[0]);i++)
        {   
        int len=ad[i].length();
        char ch[len+1];
        strcpy(ch, ad[i].c_str());
        if(strchr(ch,q)!=NULL)
            cout<<ad[i]<<endl;
        }
        return 0;
        }
        

        【讨论】:

        • 它工作正常..如果我需要输入两个或更多字符怎么办..如何修改代码?我试过这个.."if((strchr(ch,t)!=NULL)&&(strchr(ch,q)!=NULL))" 但可能还有另一种方法可以做到这一点..
        猜你喜欢
        • 2013-04-15
        • 2019-02-24
        • 2011-06-18
        • 2017-09-17
        • 1970-01-01
        • 2019-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多