Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Checking if a string contains a substring C++

I’m trying to make a program that checks if a string contains a substring of another string, but it’s not working.

Here is my code:

#include <iostream>
#include <algorithm>

using namespace std;

//Struct to store information
struct strings {
    char string1[20], string2[20];
} strings;

//Function to check if the strings are equal
void equalCheck(){
    int check = 0, i = 0;
    while (strings.string1[i] != '\0' || strings.string2[i] != '\0'){
        if (strings.string1[i] != strings.string2[i]){
            check = 1;
            break;
        }
        i++;
    }
    if (check == 0){
        cout << "The strings are equal" << endl;
    }
    else
        cout << "The strings are not equal" << endl;

}

//Function to check for a substring
void substringCheck(){
    if (strings.string1.find(strings.string2) != string::npos) {
        cout << "found!" << '\n';
    }

}

int main() {


    //Ask the user for two strings
    cout << "Please type the first string: ";
    cin >> strings.string1;
    cout << "Please type the second string: ";
    cin >> strings.string2;

    //Prints out the two strings
    //cout << "The two strings are " << strings.string1 << " and " << strings.string2;

    equalCheck();
    substringCheck();

    return 0;
}

This is the problem I get:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Problem

Any ideas? This is the first time I use C++ and I’m trying to use my basic C knowledge!

Thanks 🙂

>Solution :

Wouldn’t it be easier for strings to have two std::string instead of two char[20]?

Then you would be able to say this with no problem:

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

char is not a class like std::string, it doesn’t have any member functions. This means char[20].find doesn’t exist. std::string is a class, however. And it does have a member function called std::string::find(), so doing this to a std::string is legal.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading