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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...