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:
Any ideas? This is the first time I use C and I'm trying to use my basic C knowledge!
Thanks :)
CodePudding user response:
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.