PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Winziger buck in meinem Programm bei Cin und`\0`



jancarsten
18-01-2003, 17:31
Ich habe ein kleinens Problem mit dem ende Eines string bei der eingabe über cin !

Am ende jedes string ist doch diese Zeichen '\0' das letzte nur scheint mein Programm da nicht drauf anzuspringen. Wo liegt der fehler ?

Hier ein Paar code schnipsel:


.
***************schnib*************

cin >> reahlzahl; // String einlesen

***************schnib*************

case 'A':{cout << "Aktuellezahl: " << reahlzahl[i] << " Ort: " << i << " Zustand: " << aktuellerZustand << endl;
if((reahlzahl[i]=='-')||(reahlzahl[i]=='+')){aktuellerZustand='B';
}else if((reahlzahl[i]>='0')&&(reahlzahl[i]<='9')){aktuellerZustand='C';

}else if (reahlzahl[i]==' / 0 ') aktuellerZustand='I'; // edid wegen forum

else aktuellerZustand='I';

}
cout << "Aktuellezahl: " << reahlzahl[i] << " Ort: " << i << " Zustand-F: " << aktuellerZustand << endl;
i++;
break;



Der Buck muß noch raus dann ist das Programm fertig :B

mfg janosch

anda_skoa
18-01-2003, 17:44
Wie ist reahlzahl deklariert?

Als string oder char Array?

Ciao,
_

jancarsten
18-01-2003, 17:50
HI !

So habe ich es deklariert: char reahlzahl[100];

mfg janosch

anda_skoa
18-01-2003, 18:04
Deklariere es mal als string.

also


#include <string>
#include <iostream>

using namespace std;

int main()
{
string zahl;
cout << "zahl:";
cin >> zahl;

for (uint i = 0; i < zahl.size(); ++i)
{
cout << "zahl[" << i << "] = " << zahl[i] << endl;
}
}



Ciao,
_

jancarsten
18-01-2003, 18:21
HI !

Wenn ich das so mache wie du dann bekomme ich ein fehler mit der funktion atof()

Die Funktion atof() benötige ich aber . Den mein programm soll ein realhzahle auf korrektheit prüfen mit hilfe eines automaten (Praktikumsaufgabe)also bin ich auf atof() angewiesen . Gibt es ein möglichkeit das zeichen anzuhängen? Ich prüffe dieses zeichen ab damit ich z.b fehler meldung ausgeben kann.
Am schluß soll dann die atof() die zeichenkette um rechnen




#include <string>
#include <iostream>

using namespace std;

int main()
{
string zahl;
cout << "zahl:";
cin >> zahl;

for (int i = 0; i < zahl.size(); ++i)
{
cout << "zahl[" << i << "] = " << zahl[i] << endl;
}

cout << atof(zahl);
}

anda_skoa
18-01-2003, 18:24
atof erwartet als Parameter ein const char*

zahl ist ein Instanz der Klasse string.



double f = atof(zahl.c_str());


sollte gehen.

Ciao,
_

jancarsten
18-01-2003, 18:47
HI !

Das funktioniert immer noch nicht:confused: :confused: mit '\0'

Könnte ich dir mal mein Programm peer PM schicken da ich weiß das hier noch einige aus meinem semester rum lungern und das Programm eine Praktikums Aufgabe war.



P.S. So wie das programm jetzt aussieht ist es nicht berfegt ich weiß .
Die Entversion wird so nicht aussehen
Die ganzen cout's habe ich nur zur kontrolle rein gemacht.

anda_skoa
18-01-2003, 18:53
Original geschrieben von jancarsten
HI !

Das funktioniert immer noch nicht:confused: :confused: mit '\0'


Das \0 gilt für C Strings, die ja nur char Arrays sind.
Bei C++ string Variablen ist das nicht nötig.
Die Länge des Strings ist mit size() (wie in meinem Beispiel) ermittelbar.

Ciao,
_