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.
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"
>
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.
Comment