strcmp oder string :: vergleichen?

7

Ich möchte zwei Strings vergleichen. Ist das mit strcmp möglich? (Ich habe es versucht und es scheint nicht zu funktionieren). Ist string::compare eine Lösung?

Gibt es eine Möglichkeit, ein string mit einem char ?

zu vergleichen?

Danke für die frühen Kommentare. Ich habe in C ++ programmiert und ja es war std::string wie einige von euch erwähnt haben. Ich habe den Code nicht gepostet, weil ich das allgemeine Wissen lernen wollte und es ist ein ziemlich langer Code, also war es für die Frage irrelevant.

Ich denke, ich habe den Unterschied zwischen C ++ und C gelernt, danke, dass Sie darauf hingewiesen haben. Und ich werde jetzt versuchen, überladene Operatoren zu verwenden. Und übrigens string::compare hat auch funktioniert.

    
Perex19 30.03.2011, 21:13
quelle

6 Antworten

21

Für C ++ verwenden Sie std::string und vergleichen Sie mit string::compare .

Für C verwende strcmp . Wenn Ihre ( ich meine Ihre Programme gemeint sind) Zeichenfolgen ( aus irgendeinem seltsamen Grund ) nicht nul beendet sind, verwenden Sie stattdessen strncmp .

Aber warum sollte jemand nicht etwas so Einfaches wie == für std::string verwenden? ?

    
Sadique 30.03.2011, 21:17
quelle
12

Nehmen wir an, Sie meinen std::string , warum benutzen Sie nicht die überladenen Operatoren: str1 == str2 , str1 < str2 ?

    
Mark B 30.03.2011 21:16
quelle
3

Siehe std::basic_string::compare und std::basic_string operators reference (insbesondere gibt es operator== , operator!= , operator< usw.). Was brauchst du noch?

    
ildjarn 30.03.2011 21:17
quelle
1

Wenn Sie C ++ verwenden, verwenden Sie C ++ - Funktionen viz. %Code%. Wenn Sie C verwenden und string::compare für die Zeichenfolge verwenden müssen, verwenden Sie char*

    
doron 30.03.2011 21:16
quelle
1

Mit Ihrer Frage: "Gibt es eine Möglichkeit, eine Zeichenfolge mit einem Zeichen zu vergleichen?" meinst du "Wie finde ich heraus, ob ein bestimmtes Zeichen in einer Zeichenfolge enthalten ist?" Wenn ja, die C-Bibliothek-Funktion:

%Vor%

wird es für dich tun.

- pete

    
Pete Wilson 30.03.2011 21:22
quelle
1

std :: string kann eingebettete Nullzeichen enthalten (und vergleichen!).

sind * comp (...) vergleicht c-artige Zeichenfolgen und vergleicht sie mit dem ersten Nullzeichen (oder der angegebenen maximalen Anzahl von Bytes / Zeichen)

string :: compare ist tatsächlich als eine Vorlage basic_string implementiert, so dass Sie erwarten können, dass es für andere Typen wie wstring

funktioniert

In der unklaren Phrase, "eine Zeichenkette mit einem Zeichen zu vergleichen", können Sie das Zeichen mit * string.begin () vergleichen oder das erste Vorkommen suchen (string :: find_first_of und string :: find_first_not_of)

Haftungsausschluss: auf meinem HTC eingegeben, Schreibfehler vorbehalten:)

    
sehe 30.03.2011 21:36
quelle

Tags und Links