Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Wednesday, May 18, 2016

Why comparing 2 strings doesn't give desired result?

Why comparing 2 strings doesn't give desired result?


Below is the code I've come up with and in all honesty tonight is my first attempt at coding at all. However I cannot seem to get my if statement to work properly. It just simply jumps to else even if I type Westley or westley or (space)Westley.

I want the program to be able to accept any of my team members names however I figured I get my name working and then I could add the rest of them later. Any thoughts or help would be wonderful. Also as a side note I was going to try and loop it if it went to the else back up to the begining any thoughts on that as well? Thank you

#include   using namespace std;    int main ()  {    char Westley[] = "Westley";    char Alex[] = "Alex";    char Andrea[] = "Andrea";    char Bee[] = "Bee";    char Gia[] = "Gia";    char KaYeng[] = "Ka Yeng";    char Chi[] = "Chi";    char Corinne[] = "Corinne";    char Joyce[] = "Joyce";    char Parish[] = "Parish";    char membername [80];    cout << "Please Enter a Beta Team Members Name.\n";    cin >> membername;    if (membername == Westley)    {   cout << "BETA TEAM ROSTER!!\n";        cout << "Westley.\n";        cout << "Alex.\n";        cout << "Andrea.\n";        cout << "Bee.\n";        cout << "Gia.\n";        cout << "Ka Yeng.\n";        cout << "Chi.\n";        cout << "Corinne.\n";        cout << "Joyce.\n";        cout << "Parish.\n";    }    else        cout << "Not a Valid Beta Team Members Name!\n" << "Please Enter a Beta Team Members Name"<< endl;  cin >> membername;    return 0;  }  

Answer by Anders K. for Why comparing 2 strings doesn't give desired result?


Since it is arrays you are working with you need to use strmcp instead e.g.

if (!strcmp(membername, Westley) ...  

since you are working in C++ use instead string:

#include     using namespace std;    string Westley = "Westley";  

... then you can do

if (membername == Westley) ...  

Answer by dip for Why comparing 2 strings doesn't give desired result?


You can not use "==" operator. Try to find out more about

strcmp

if (strcmp(membername, "Westley") == 0)     ...  

Answer by Donal Fellows for Why comparing 2 strings doesn't give desired result?


Don't use char[]; use std::string for this sort of thing as that knows how to do comparisons in a helpful way (comparisons between char arrays test if they are the same array, not if the contents is identical).

Answer by danishgoel for Why comparing 2 strings doesn't give desired result?


this is c++ and you are using a char array not a string you need to use strcmp for string comparison

you can do this like

if(strcmp(membarname, Westley))  

or if possible you can use std::string instead of char[] to store a string then you can use == operator

you can use the std::string as follows

#include   using namespace std;    int main(){      string Westley = "Westley";        ....        string membername;      cout << "Please Enter a Beta Team Members Name.\n";      cin >> membername;      if (membername == Westley){            ....      }      ....  }  

Answer by Constantinius for Why comparing 2 strings doesn't give desired result?


First of all, if you are coding with C++ you should use std::string instead of char []. It has the convenience that you can compare two strings (alas with char [] you have to call functions like strcmp or the like).

For example:

#include   #include  // <-- important  using namespace std;    int main ()  {      string Westley("Westley");      ...        if(membername == Westley) // now works!      {          ...  

Answer by iammilind for Why comparing 2 strings doesn't give desired result?


Instead of character array char[]; use std::string and you will get the desired result.

if (membername == Westley)  

Because, for char[] data, above comparison results in address comparison and not the content comparison.

Answer by hansmaad for Why comparing 2 strings doesn't give desired result?


The == operator you are using compares the addresses of the strings. To compare two C Strings use the strcmp function from (string.h). In C++ you should use the std::string class template, which can be intuitively compared using the == operator.

Answer by Huskar for Why comparing 2 strings doesn't give desired result?


if (membername == Westley)  

only compare two pointers' value.


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.