strcmp oder string::compare?
Möchte ich zum vergleichen von zwei strings. Ist es möglich mit strcmp
? (Ich habe versucht, und es scheint nicht zu funktionieren). Ist string::compare
eine Lösung?
Andere als diese, gibt es eine Möglichkeit zu vergleichen string
zu einem char
?
Danke für die frühen Kommentare. Ich war Programmierung in C++ und ja, es war std::string
wie einige von Ihnen erwähnt.
Ich habe nicht nach dem code, weil ich wollte lernen, das Allgemeinwissen und es ist ein ziemlich langer code, so war es irrelevant für die Frage.
Ich glaube, ich gelernt, den Unterschied zwischen C++ und C, vielen Dank für den Hinweis. Und ich werde versuchen, das überladen von Operatoren jetzt. Und durch die Art und Weise string::compare
gut geklappt.
- "scheint, nicht zu arbeiten" - können Sie das konkretisieren? Was sind die Parameter und was ist das Ergebnis?
- Wenn Sie programming in C++, dann sollten Sie die C++ - Idiome, was bedeutet, dass C++
string
und Ihre zugeordneten Methoden. Für die C-C-Idiome, wiechar *
undstrcpy
. - was meinst du mit "scheint nicht zu arbeiten"?
- "Ich habe versucht, und scheint, nicht zu arbeiten" => poste den code, den Sie verwenden, die Ergebnisse, die Sie erwarteten und was Sie bekamen. Und auch Sie sollten angeben, was meinst du mit "string" (C-style-ASCIIZ-Zeichenfolge?
std::string
? Etwas anderes?) und was meinst du mit "compare a string to char" (es macht keinen Sinn, es ist wie äpfel mit Birnen vergleichen). - Und bitte denken Sie daran, zu akzeptieren, eine Antwort --> Abstimmung Dank.
- Italia, das Es nicht funktioniert, weil compiler und sagte, es sollte sein char* nicht als string. Und ich fragte: "vergleichen Sie einen string in ein char", da war ich ziemlich verwirrt mit Strings und chars. Jetzt habe ich gelernt, dass in C und C++ Sie sind völlig anders.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für C++ zu verwenden
std::string
und vergleichen Sie mitstring::compare
.Für C verwenden
strcmp
. Wenn Ihr (ich meinte Ihre Programme) strings (für einige seltsame Grund) nichtnul
beendet, verwenden Siestrncmp
statt.Aber warum würde jemand nicht verwenden Sie etwas einfaches wie
==
fürstd::string
?
compare
3-Weg-Ausgang<0
,0
,>0
, in der Erwägung, dass==
binärentrue
/false
Ausgabe. Manchmal müssen Sie verschiedene Aktionen, die auf, wenn die strings zu vergleichen, weniger oder mehr. Ein 3-Weg-Ausgang können Sie das tun, ohne dass vergleichen die Zeichenfolgen zweimal.Vorausgesetzt, du meinst
std::string
, warum nicht das überladen von Operatoren:str1 == str2
,str1 < str2
?Sehen
std::basic_string::compare
undstd::basic_string
- Operatoren Referenz (insbesondere existiertoperator==
,operator!=
,operator<
usw.). Was Sie sonst noch brauchen?std::string::compare
, die bevorzugt werden sollten überstrcmp
in C++ für die Grund @Paul R kommentiert. Ich werde meinen Beitrag Bearbeiten.Bei der Verwendung von C++ die C++ - Funktionen viz.
string::compare
. Bei der Verwendung von C und Sie gezwungen sind, zu verwendenchar*
für den string verwendenstrcmp
Durch Ihre Frage, "ist es ein Weg, um eine Zeichenfolge vergleichen, um einen char?" meinst du "Wie finde ich heraus, ob ein bestimmter char in einem string?" Wenn dem so ist, das der C-library-Funktion:
wird es für Sie tun.
-- pete
std::string enthalten kann (und vergleichen!) eingebettete null-Zeichen.
sind*comp(...) vergleicht c-style-strings, den Vergleich bis zum ersten null-Zeichen (oder die angegebene max Anzahl der bytes/Zeichen)
string::compare-tatsächlich in die Praxis umgesetzt als template basic_string so können Sie erwarten, dass es auch für andere Arten wie wstring
Auf den unklaren Begriff zu "vergleichen einen string in ein char" Sie können vergleichen, die char * - string.begin() oder lookup das erste vorkommen (string::find_first_of und string::find_first_not_of)
Disclaimer: geschrieben mit meinem HTC, Tippfehler vorbehalten 🙂