Funktion strrchr wird nicht erkannt
-
Hallo liebe Gemeinde.
Folgenden Beispielcode habe ich auf C++ Reference gefunden:
/* strrchr example */ #include <stdio.h> #include <string.h> int main () { char str[] = "This is a sample string"; char * pch; pch=strrchr(str,'s'); printf ("Last occurence of 's' found at %d \n",pch-str+1); return 0; }Nun wollte ich diesen Code auf C++ transferieren:
#include<iostream> #include<cstring> #include<stdio.h> using namespace std; int main() { std::string str = "Das ist ein einfacher String.\n"; std::string * pch; pch = strrchr(str,'s'); cout << "Letzte Stelle von 's' wurde gefunden an \n" << pch-str+1; return 0; }Jedoch bekomme ich folgende Fehlermeldungen:
error C2665: "strrchr": Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.(Bezieht sich auf Zeile 11) error C2679: Binärer Operator '-': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)(Bezieht sich auf Zeile 13)Langsam, was will ich machen?
Ich will von einem String die letzte Stelle des Buchstabens
s. Dazu benötige ich, wie im Beispiel auf http://www.cplusplus.com/reference/ zu sehen die Funktion strrchr. Um diese Funktion einbinden zu können, benötige ich die Bibliotheken vonstdio.hundstring.Ich dachte, dass ich es mit
#include<cstring>und#include<stdio.h>getan hätte...Wo liegt mein Denkfehler??
Danke für die Antworten im Voraus.
Gruß
Max
-
Ich will von einem String die letzte Stelle des Buchstabens s.
std::string str = "Dies ist ein einfacher String."; std::cout << "Letztes Vorkommen: " << str.rfind( 's' );Ungetestet.
Man kann selbstverständlich noch aufnposprüfen, wenn man sehr akribisch ist.
(Für das Beispiel macht es keinen Unterschied)
-
strchr arbeitet mit C-Strings (Nullterminierte char-Arrays) und nicht mit dem C++-string.
Steht auch so in der Referenz. Für den ersten Parameter wirdconst char *oderchar *erwartet. Da steht nichtstring.
-
DirkB schrieb:
strchr arbeitet mit C-Strings (Nullterminierte char-Arrays) und nicht mit dem C++-string.
Steht auch so in der Referenz. Für den ersten Parameter wirdconst char *oderchar *erwartet. Da steht nichtstring.Hier steht es auch:
http://en.cppreference.com/w/cpp/string/byte/strrchr
-
std::string ist nicht gleich char *.
Du willst wahrscheinlichstd::string str = "Das ist ein einfacher String.\n"; std::string pch; pch = strrchr(str.c_str(), 's');Wobei pch = strrchr(str.c_str(), 's'); den halben String kopiert, das willst du wahrscheinlich gar nicht.
-
nwp3 schrieb:
Du willst wahrscheinlich
std::string str = "Das ist ein einfacher String.\n"; std::string pch; pch = strrchr(str.c_str(), 's');Nein, das will er nicht. Er will, was ich oben vorgemacht habe.
-
Bevor du weiter char-Arrays und std::string durcheinander bringst, ändere erst mal ganz schnell dein Passwort (siehe anderer Thread)!

-
_matze schrieb:
Bevor du weiter char-Arrays und std::string durcheinander bringst, ändere erst mal ganz schnell dein Passwort (siehe anderer Thread)!

Hat er es immer noch nicht geändert? Oder hast du es erraten? :xmas2:
-
Ich sag's nur noch mal, weil noch keine Reaktion von ihm gekommen ist.

-
Ich habe es jetzt doch schon geändert....
Bzw. auf welches Passwort bist Du gekommen?
Edit:
Spätestens jetzt kommt niemand mehr darauf, wie mein Passwort ist... Wie blöd war ich nur, mein Passwort frei zu gänglich zu machen... *Kopf gegen die Wand schlag*
-
Ändere es am besten auch überall, wo du es sonst noch verwendet hast.