compare two strings or string objects for equality in c\c++In the process of writing a program, you often encounter situations where you want to compare two strings for equality. If the object to be compared is a char* string, the strcmp is returned as a negative number when the char* is used with the Int (const char* s1,const s2 S1<S2);
When S1==s2, the return value = 0;
Returns a positive number when s1>s2.
That is: two strings are compared from left to right by character (compared to the size of the ASCII value) until there are different characters or "". Such as:
"A" < "B" "a" > "a" "Computer" > "Compare"
Special NOTE: strcmp (const char *s1,const char * s2) which can only compare strings, can be used to compare two string constants, or compare array and string constants, not other forms of parameters such as numbers.
The ANSI standard stipulates that the return value is positive, negative, 0. The exact value is dependent on a different C implementation.
If the object to be compared is two strings, the function compare () is used. To compare string S1 and S2, write as: S1.compare (S2), which is equal if the return value is 0. Note: When comparing two strings, you cannot take advantage of the symbol "= =", the "= =" Symbol compares two string addresses are equal, before making a mistake on this issue, I remember. I remember.
If you compare two characters, you can use "= =" Direct comparison ~
However, when comparing two string objects with "= =", the return value of the expression is 1, equal to 0. For a simple example:
#include <iostream>
#include <string>
using namespace std;
int main () {
char a[] = "AAA", b[]= "AAA";
String A = "AAA", B = "AAA";
The values of cout << "*a and *b respectively are:" <<*a << "," << *b << Endl;
cout << "*" AAA "value is:" << * "AAA" << Endl;
cout << "Use = = Compare a,b two strings, the result is (equal to 1, unequal to 0):" << (a==b) << Endl;
cout << "uses strcmp () to compare a,b two strings, resulting in (equal to 0, not varying from 0):" <<strcmp (a,b) << Endl;
cout << "Use = = Compare A,b Two string, the result is (equal to 1, unequal to 0):" << (a==b) << Endl;
cout << "uses compare () to compare a,b two strings, resulting in (equal to 0, not varying 0):" << a.compare (B) << Endl;
int x = ten;
void* p = &x;
cout << sizeof (void*) << "Address" << p << Endl;
return 0;
}
The output results are:
As you can see from the program, the reason for comparing strings with "= =" is that the string itself is an address, for example:
Char a[]= "AAA";
It's easy to understand that a is a pointer to a string, but you should also know that the "AAA" string that contains quotes is also an address that points to the first element of the string, so the result of * "AAA" is a.
For string objects, there are not so many considerations ...