Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Guten Morgen, ich versuche verzweifelt einen string in einen integer umzuwandeln. Erhalte als Fehlermeldung aber immer

error C2065: 'converter' : undeclared identifier

istringstream converter((zeichnungsnummern_xar[2].substr(11,2)));converter >> hoechstes_blatt;

Wieso? converter ist doch deklariert.

Geschrieben
Wieso? converter ist doch deklariert.

Das lässt sich aus diesem winzigen Codefragment nicht ablesen. Der Compiler ist aber anderer Meinung, und meistens hat er Recht.

Ist das die erste Fehlermeldung?

Hast du <sstream> eingebunden?

Geschrieben
Ist das die erste Fehlermeldung?

Hast du <sstream> eingebunden?

Ist die erste Fehlermeldung und ich habe sstream eingebunden.

while (bWorking)

{

bWorking = finder.FindNextFile ();

anzahl_dateien++;

string s_dateiname;

s_dateiname = finder.GetFileTitle();

zeichnungsnummern_xar.push_back(s_dateiname);

cout << finder.GetFileTitle();

cout << " "<< s_dateiname.length() << "\n";

}

cout << anzahl_dateien;//Anzahl der Blätter ermitteln

int hoechstes_blatt=0;

while(hoechstes_blatt<anzahl_dateien)

istringstream converter((zeichnungsnummern_xar[2].substr(11,2)));

converter >> hoechstes_blatt;

Geschrieben

Der Rumpf einer while-Schleife umfasst nur die nächste Anweisung. Da du keine geschweiften Klammern gesetzt hast, ist es also nur die Deklaration von converter. Die nächste Zeile

converter >> hoechstes_blatt;

gehört nicht mehr zur Schleife. Der Stringstream wird im Schleifenrumpf deklariert, ist also danach nicht mehr gültig.

Wenn man seinen Code konsequent richtig einrückt, findet man solche Fehler sehr viel schneller.

Geschrieben

Hallo,

Mir erschliesst sich die Funktion dieses Codes nicht. Kann mir mal jemand helfen?

LG

André


while(hoechstes_blatt<anzahl_dateien)

{

   istringstream converter((zeichnungsnummern_xar[2].substr(11,2)));

   converter >> hoechstes_blatt;

}

Geschrieben

Die Schleife geht vermutlich noch weiter, diese beiden Zeilen allein ergeben keinen sinnvollen Schleifenrumpf, weil sich der Wahrheitswert der Abbruchbedingung möglicherweise niemals ändert.

Zum Inhalt:

Es wird ein istringstream-Objekt namens converter erstellt. istringstream ist eine Klasse, mit deren Hilfe man Strings in andere Typen konvertieren kann. Man "füttert" den istringstream mit einem String, und kann dann daraus, wie aus cin oder einem ifstream, mit dem operator>> auslesen.

Hier wird converter mit dem String zeichnungsnummern_xar[2].substr(11,2) initialisiert. zeichnungsnummern_xar ist vermutlich ein Array oder Vector von Strings.

Danach wird aus dem Stream die int-Variable hoechstes_blatt befüllt. Wenn also im Stream beispielsweise der String "42" steht, steht hinterher in der int-Variablen der Wert 42.

Das Ganze hätte man auch mit sscanf oder atoi machen können, allerdings ist der Funktionsumfang dieser Funktionen von vornherein beschränkt. Zudem kann sscanf keine Typprüfung bieten. Stringstreams sind flexibler. Man kann aus ihnen (wie aus jedem anderen istream) jeden Typ herauslesen, der einen operator>> anbietet, und die kann man für eigene Typen selbst schreiben. Stringstreams bieten sich also insbesondere für die generische Programmierung (also Templates) an.

Geschrieben
Die Schleife geht vermutlich noch weiter, diese beiden Zeilen allein ergeben keinen sinnvollen Schleifenrumpf, weil sich der Wahrheitswert der Abbruchbedingung möglicherweise niemals ändert.
Richtig, die Anweisung
hoechstes_blatt++

fehlte noch.

zeichnungsnummern_xar ist vermutlich ein Array oder Vector von Strings.
Hier ist zeichnungsnummern_xar ein Vector von strings. Die Schleife ist Teil einer Funktion, welche Dateien, die einen Index in ihrem Namen enthalten, nach dem Index ordnet.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...