Connecting Tech Pros Worldwide Forums | Help | Site Map

String constant in compare operation

C. J. Clegg
Guest
 
Posts: n/a
#1: Nov 20 '08

Consider this code:

char* s;
char* putSomethingThere( void );

s = putSomethingThere( );

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

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


Mark McIntyre
Guest
 
Posts: n/a
#2: Nov 20 '08

re: String constant in compare operation


C. J. Clegg wrote:
Quote:
Consider this code:
>
char* s;
char* putSomethingThere( void );
>
s = putSomethingThere( );
>
if( s == "abc" )
{
...
}
>
If I remember correctly, that's correct C++ but incorrect C, even if
putSomethingThere() 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.
Keith Thompson
Guest
 
Posts: n/a
#3: Nov 20 '08

re: String constant in compare operation


C. J. Clegg <answer.in.newsgroup@no.spamwrites:
Quote:
Consider this code:
>
char* s;
char* putSomethingThere( void );
>
s = putSomethingThere( );
>
if( s == "abc" )
{
...
}
>
If I remember correctly, that's correct C++ but incorrect C, even if
putSomethingThere() 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_Keith) 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"
Default User
Guest
 
Posts: n/a
#4: Nov 20 '08

re: String constant in compare operation


C. J. Clegg wrote:
Quote:
>
Consider this code:
>
char* s;
char* putSomethingThere( void );
>
s = putSomethingThere( );
>
if( s == "abc" )
{
...
}
>
If I remember correctly, that's correct C++ but incorrect C, even if
putSomethingThere() 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 putSomethingThere() 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
C. J. Clegg
Guest
 
Posts: n/a
#5: Nov 21 '08

re: String constant in compare operation


On Thu, 20 Nov 2008 23:18:22 +0000, Mark McIntyre
<markmcintyre@TROUSERSspamcop.netwrote:
Quote:
>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...

Closed Thread