How can I compare a single character from a string, and another string (which may or may not be greater than one character)
This program gives me almost 300 lines of random errors. The errors don't reference a specific line number either, just a lot of stuff about "char* ", "", or "std::to_string".
#include <iostream>
#include <string>
using std::cout;
using std::string;
int main() {
string str = "MDCXIV";
string test = "D";
if (test == str[4]) { // This line causes the problems
cout << test << endl;
}
return 0;
}
You need to convert str[4] (which is a char) to a string before you can compare it to another string. Here's a simple way to do this
You're mixing types. It doesn't know how to compare a string (
test
) to a char (str[4]
).If you change test to a
char
that will work fine. Or reference the specific character within test you want to compare such asif (test[0] == str[4])
it should compile and run.However, as this is merely an example and not really the true question what you'll want to do is look at the functionality that the
std::string
class suppliesI think you might be mixing python with c++. In c++
'g'
refers to a single characterg
not a string of length 1. "g" refers to an array (string) which is 1 character long and looks like ['g']. So as you can see, if you compare a single character to an array of characters no matter if the array is a single character long, this operation is not defined.This will work if define it yourself by building a class which is able to compare string of one character long to a single character. Or just overload the
==
operator for doing just thatExample:
Also you need
"D"
to be a char value not a string value if you are comparing it like that.You have to turn it into a char array before can access it. Unless you do.
which you can also write as
str[i]
<-- what you did.Essentially, this all boils down to test needs to initialized like
char test = 'D';
Final Output..
You're comparing a char to a std::string, this is not a valid comparison. You're looking for std::string::find, as follows:
Note that this will return true if test contains
str[4]
.str[4]
is achar
type, which will not compare with astring
.Compare apples with apples.
Use
instead.