【问题标题】:How to search a string in the another string in c++?如何在c ++中搜索另一个字符串中的字符串?
【发布时间】:2015-04-21 10:14:14
【问题描述】:
int main(){
string s1="gandalf";
string s2="dal";
function(s1,s2);
return 0;

}

函数中,如果字符串s1中有“dal”,则返回1。 否则返回 0

【问题讨论】:

  • 是什么让您无法简单地阅读std::string 文档?

标签: c++ string search char


【解决方案1】:

试试下面的

bool function( const std::string &s1, const std::string &s2 )
{
    return s1.find( s2 ) != std::string::npos;
}

如果你想使用循环自己编写函数,那么它可以如下所示

#include <iostream>
#include <iomanip>
#include <string>

bool function( const std::string &s1, const std::string &s2 )
{
    bool found = false;

    if ( !( s1.size() < s2.size() ) && !s2.empty() )
    {
        for ( size_t i = 0; !found && i < s1.size() - s2.size() + 1; i++ )
        {
            size_t j = 0;
            while ( j < s2.size() && s1[i+j] == s2[j] ) ++j;
            found = j == s2.size();
        }
    }

    return found;
}

int main() 
{
    std::string s1 = "gandalf";
    std::string s2 = "dal";

    std::cout << std::boolalpha << function( s1, s2 ) << std::endl;

    return 0;
}

程序输出是

true

【讨论】:

  • 直接发布答案会让人们非常轻松。你应该帮助他们,给他们指出正确的方向,而不是用勺子喂他们。
  • @Pratik 我认为 asnwers 应该让事情变得非常简单。:)
  • 确实如此,但它不应该是努力实现您的答案,而不仅仅是复制粘贴并使用它们。它会影响学习曲线。
  • @Pratik 我不是教授新任务的教授。:)
【解决方案2】:
void fonk(string a, string b){
char x[10],y[10];
for(int i=0;i<10;i++)
x[i]=a[i];
for(int i=0;i<10;i++)
y[i]=b[i];

for(int j=0;j<10;j++){
    if(x[j]==y[0]&&x[j+1]==y[1]&&x[j+2]==y[2])
    cout<<"true"<<endl;
    else
    cout<<"false"<<endl;

} }

【讨论】:

  • 代码很糟糕,因为您使用的是幻数 10,而字符串的大小可以小于或大于 10
  • 下一次,最好直接在您的问题中发布您的尝试。这样人们就可以看到你确实试图解决问题,并促使你朝着正确的方向前进。
猜你喜欢
  • 2021-11-28
  • 1970-01-01
  • 2013-01-18
  • 2012-03-05
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 2019-08-26
相关资源
最近更新 更多