PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] char * mit string vergleichen



sixfriends
29-06-2003, 18:03
Ich will einen char * array mit einem string vergleichen. Das ist mein Code


char s[50];
FILE *file = popen("ls -al", "r");
fgets(s, 50, file);
pclose(file);


Wie kann ich jetzt dieses s mit einem festen string vergleichen? Hab schon einiges versucht, hab aber nicht so viel Ahnung von C/C++. Kann mir jemand helfen? Danke

wraith
29-06-2003, 18:16
zb. mit strcmp


#include <cstring>
...
const char* str = "Hello World";
if(0 == std::strcmp(s,str)) {
//Gleich
}

oder mit std::string


#include <string>
...
const std::string str = "Hello World";
if(str == s) {
//Gleich
}

sixfriends
30-06-2003, 00:32
Das zweite hat sich aus irgendwelchen Gründen zwar nicht kompilieren lassen, aber das erste funzt.

thx a lot.

wraith
30-06-2003, 09:54
Original geschrieben von sixfriends
Das zweite hat sich aus irgendwelchen Gründen zwar nicht kompilieren lassen
Aus was für Gründen :) ?
Der Code ist korrekt.

sixfriends
30-06-2003, 18:30
> gcc -o pa pa.c

pa.c:1: string: No such file or directory

> gcc -o pa pa.cpp

/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::copy(unsigned int, char const *, unsigned int)':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::gnu.linkonce.t.copy(unsigned int, char const *, unsigned int)+0x33): undefined reference to `string_char_traits<char>::copy(char *, char const *, unsigned int)'
/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::move(unsigned int, char const *, unsigned int)':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::Rep::gnu.linkonce.t.move(unsigned int, char const *, unsigned int)+0x33): undefined reference to `string_char_traits<char>::move(char *, char const *, unsigned int)'
/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::replace(unsigned int, unsigned int, char const *, unsigned int)':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.replace(unsigned int, unsigned int, char const *, unsigned int)+0x31): undefined reference to `__out_of_range(char const *)'
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.replace(unsigned int, unsigned int, char const *, unsigned int)+0x8e): undefined reference to `__length_error(char const *)'
/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::compare(char const *, unsigned int, unsigned int) const':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.compare(char const *, unsigned int, unsigned int) const+0x2c): undefined reference to `__out_of_range(char const *)'
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.compare(char const *, unsigned int, unsigned int) const+0x7b): undefined reference to `string_char_traits<char>::compare(char const *, char const *, unsigned int)'
/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::assign(char const *)':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.assign(char const *)+0x16): undefined reference to `string_char_traits<char>::length(char const *)'
/tmp/ccQqTPO5.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::compare(char const *, unsigned int) const':
/tmp/ccQqTPO5.o(.basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::gnu.linkonce.t.compare(char const *, unsigned int) const+0x17): undefined reference to `string_char_traits<char>::length(char const *)'
collect2: ld returned 1 exit status

quinte17
30-06-2003, 18:32
#include <string.h>

ist dein freund

wraith
30-06-2003, 18:36
Du mußt das Ding als C++ kompilieren,dh g++ statt gcc verwenden.

>>#include <string.h>
>>ist dein freund
In diesem Fall nicht.string.h ist ein C Header,hat mit dem C++ Header string (ohne h) nichts zutun.

sixfriends
30-06-2003, 18:37
Mach mich nicht für die Fehler (?) von wraith verantwortlich, wollte damit im übrigen nur damit zeigen, dass es weder so in C noch in C++ geht (ca.c und ca.cpp)!!

Macht aber nix, das erste läuft ja schon.:D

sixfriends
30-06-2003, 18:37
Verdammt, wraith war schneller;)

quinte17
30-06-2003, 18:37
da geb ich dir recht ;) aber er hatte ja mit gcc compiled... (ich hab nicht so genau den quellcode angesehen, sonst hätte ichs gemerkt *gg* -> str::...

mfg