PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Pointer / Int Vergleich



Furtion
29.07.2010, 20:11
Hi,

ich würde gerne aus einem String die einzelnen Buchstaben herauslesen und
diese mit einem Buchstaben vergleichen. Der Zweck ist einen String in
dem Zwei Zahlen durch ein "/" getrennt sind, wieder in 2 Zahlen aufzuteilen.
Doch schon bei dem Vergleich mit dem "/" möchte der g++ Compiler nichts
mehr machen. Evt. haben ja die C++ Pros einen Ratschlag.



string str = "14213/45134";
int i;

for (int i = 0; i < str.size(); i++)
{
if (str[i] == "/")
{
//machwas
}
cout << str[i] << endl;
}

Fehler:
ISO C++ forbids comparison between pointer and integer

markusj
29.07.2010, 22:11
Als C-Programmierer würde ich sagen, vergleiche nicht ein Zeichen (Stringelement) mit einem String denn "/" bedeutet eigentlich: { '/', 0x00 }.
Damit vergleichst du im Endeffekt mit einer Adresse, was wohl meist schiefgehen sollte.

Probiere mal, anstelle von "/" ein '/', das sollte reichen ...

Falls C++ so absurd anders sein sollte, dass das nicht stimmt - einfach ignorieren ;)
Zumindest der Compiler scheint meiner Meinung zu sein (Zeichen -> char -> Integer-Typ)

mfG
Markus

Edit: Verworrene Gedanken entknotet

Snaper
29.07.2010, 23:09
Solltest du bei String bleiben wollen dann schaue dir mal:
http://www.cplusplus.com/reference/string/string/find/ an

So wie du es machst kannst du es aber mit einem char-array lösen ergo würdest du char str[30] nehmen anstatt string str.

Aber auch find ist nicht schwer zu benutzen. Versuche erstmal die selber reinzufuchsen wenn es nicht weiter geht dann frag nochmal dann kann ich dir auch ein beispiel liefern ;)

PicNick
30.07.2010, 06:43
Wie schon gesagt->
"/" ergibt einen Pointer auf einen String
also hat der Compiler recht.

muss definitiv heissen
if (str[i] == '/')