String constant in compare operation

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • C. J. Clegg

    String constant in compare operation


    Consider this code:

    char* s;
    char* putSomethingThe re( void );

    s = putSomethingThe re( );

    if( s == "abc" )
    {
    ...
    }

    If I remember correctly, that's correct C++ but incorrect C, even if
    putSomethingThe re() put "abc" into s, right?

  • Mark McIntyre

    #2
    Re: String constant in compare operation

    C. J. Clegg wrote:
    Consider this code:
    >
    char* s;
    char* putSomethingThe re( void );
    >
    s = putSomethingThe re( );
    >
    if( s == "abc" )
    {
    ...
    }
    >
    If I remember correctly, that's correct C++ but incorrect C, even if
    putSomethingThe re() put "abc" into s, right?
    Its not 'correct' in either language, if your intention is to compare
    the strings. In both cases it compares the value of the pointers to the
    start of the strings.

    You may be thinking in C++ of the std::string class which AFAIR has an
    == operator defined on it to permit comparison to a string literal.

    Comment

    • Keith Thompson

      #3
      Re: String constant in compare operation

      C. J. Clegg <answer.in.news group@no.spamwr ites:
      Consider this code:
      >
      char* s;
      char* putSomethingThe re( void );
      >
      s = putSomethingThe re( );
      >
      if( s == "abc" )
      {
      ...
      }
      >
      If I remember correctly, that's correct C++ but incorrect C, even if
      putSomethingThe re() put "abc" into s, right?
      The comp.lang.c FAQ is at <http://www.c-faq.com/>. You've just asked
      question 8.2.

      <OFFTOPIC>
      The above code probably means the same thing in C++ as it does in C,
      but C++ has other features that let you use the "==" operator to
      compare strings. For details, consult a C++ textbook; if that fails,
      ask in comp.lang.c++.
      </OFFTOPIC>

      --
      Keith Thompson (The_Other_Keit h) kst-u@mib.org <http://www.ghoti.net/~kst>
      Nokia
      "We must do something. This is something. Therefore, we must do this."
      -- Antony Jay and Jonathan Lynn, "Yes Minister"

      Comment

      • Default User

        #4
        Re: String constant in compare operation

        C. J. Clegg wrote:
        >
        Consider this code:
        >
        char* s;
        char* putSomethingThe re( void );
        >
        s = putSomethingThe re( );
        >
        if( s == "abc" )
        {
        ...
        }
        >
        If I remember correctly, that's correct C++ but incorrect C, even if
        putSomethingThe re() put "abc" into s, right?
        You'll have to define what you mean by "correct". There are no syntax
        errors that I see, although the definition for putSomethingThe re() is
        missing. However, comparing strings with == is almost always a design
        flaw, as you will be comparing the pointer values, not what they point
        to. It's the same for C++, although you might be thinking of the
        std::string class.




        Brian

        Comment

        • C. J. Clegg

          #5
          Re: String constant in compare operation

          On Thu, 20 Nov 2008 23:18:22 +0000, Mark McIntyre
          <markmcintyre@T ROUSERSspamcop. netwrote:
          >You may be thinking in C++ of the std::string class which AFAIR has an
          >== operator defined on it to permit comparison to a string literal.
          Indeed, that's what I was thinking of. I forgot that C++ had an
          overloaded == operator to permit that.

          Thanks to all...

          Comment

          Working...