c++ - जांचें कि क्या स्ट्रिंग में सी ++ में कोई स्ट्रिंग है


मेरे पास टाइप स्ट्रिंग का एक चर है मैं यह देखना चाहता हूं कि इसमें एक निश्चित स्ट्रिंग है। मुझे यह कैसे करना है?

क्या कोई ऐसा कार्य होता है जो स्ट्रिंग मिल रहा है, और यदि यह नहीं है तो गलत है?



Answers



std::string::find प्रयोग करें निम्नानुसार खोजें:

if (s1.find(s2) != std::string::npos) {
    std::cout << "found!" << '\n';
}

नोट: "पाया!" मुद्रित किया जाएगा यदि s2 s1 का एक substring है, दोनों s1 और s2 प्रकार std :: string हैं।




आप फ़ंक्शन को find का प्रयास कर सकते find :

string str ("There are two needles in this haystack.");
string str2 ("needle");

if (str.find(str2) != string::npos) {
//.. found.
} 



असल में, आप बूस्ट पुस्तकालय का उपयोग करने की कोशिश कर सकते हैं, मुझे लगता है कि std :: स्ट्रिंग सभी सामान्य स्ट्रिंग ऑपरेशन करने के लिए पर्याप्त विधि प्रदान नहीं करती है। बढ़ावा देने में, आप बस boost::algorithm::contains को boost::algorithm::contains सकते boost::algorithm::contains :

#include "string"

#include "boost/algorithm/string.hpp"

using namespace std;
using namespace boost;
int main(){
    string s("gengjiawen");
    string t("geng");
    bool b = contains(s, t);
    cout << b << endl;
    return 0;
}



आप यह कोशिश कर सकते हैं

string s1 = "Hello";
string s2 = "el";
if(strstr(s1.c_str(),s2.c_str()))
{
   cout << " S1 Contains S2";
}



यदि आप मानक पुस्तकालय कार्य का उपयोग नहीं करना चाहते हैं, तो नीचे एक समाधान है।

#include <iostream>
#include <string>

bool CheckSubstring(std::string firstString, std::string secondString){
    if(secondString.size() > firstString.size())
        return false;

    for (int i = 0; i < firstString.size(); i++){
        int j = 0;
        if(firstString[i] == secondString[j]){
            while (firstString[i] == secondString[j] && j < secondString.size()){
                j++;
                i++;
            }

            if (j == secondString.size())
                    return true;
        }
    }
    return false;
}

int main(){
    std::string firstString, secondString;

    std::cout << "Enter first string:";
    std::getline(std::cin, firstString);

    std::cout << "Enter second string:";
    std::getline(std::cin, secondString);

    if(CheckSubstring(firstString, secondString))
        std::cout << "Second string is a substring of the frist string.\n";
    else
        std::cout << "Second string is not a substring of the first string.\n";

    return 0;
}



यह एक साधारण कार्य है

bool find(string line, string sWord)
{
    bool flag = false;
    int index = 0, i, helper = 0;
    for (i = 0; i < line.size(); i++)
    {
        if (sWord.at(index) == line.at(i))
        {
            if (flag == false)
            {
                flag = true;
                helper = i;
            }
            index++;
        }
        else
        {
            flag = false;
            index = 0;
        }
        if (index == sWord.size())
        {
            break;
        }
    }
    if ((i+1-helper) == index)
    {
        return true;
    }
    return false;
}



#include <algorithm>        // std::search
#include <string>
using std::search; using std::count; using std::string;

int main() {
    string mystring = "The needle in the haystack";
    string str = "needle";
    string::const_iterator it;
    it = search(mystring.begin(), mystring.end(), 
                str.begin(), str.end()) != mystring.end();

    // if string is found... returns iterator to str's first element in mystring
    // if string is not found... returns iterator to mystring.end()

if (it != mystring.end())
    // string is found
else
    // not found

return 0;
}