Fehler: string subsricpt out of range
-
Guten Abend,
ich habe ein Übungsprogramm geschrieben, bekomme bei der Ausgabe jedoch einen Fehler:
string subsricpt out of range// String-Aufteilung (Vor- und Nachn.).cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int lengh, luecke; int i = 0; string vorname = ""; string nachname = ""; string name = "Max Mustermann"; cout << "Der Name ist " << name; // Zeichenlänge herausfinden & 1. Leerzeichen suchen (Position) lengh = name.size(); // Länge von name wird in lengh1 gespeichert luecke = name.find(" "); // Position von der ersten Lücke wird gesucht cout << endl << "Der Name ist " << lengh << " Buchstaben lang"; // Vorname for(i = 0; i < lengh; i++) { if(name[i] != 32) { vorname += name[i]; } else break; } // Nachname for(i = luecke + 1; i != 32; i++) { if(name[i] != 32) { nachname += name[i]; } else break; } // Ausgabe cout << endl << "Der Vorname ist: " << vorname; cout << endl << "Der Nachname ist: " << nachname; cout << endl << endl; return 0; }Ich habe das Programm eigentlich nur von einem Blatt aus der Schule abgeschrieben, dort hat es einwandfrei funktioniert. Habe es auch mal einer anderen Person zum testen geschickt (den Code), dort funktioniert es aucht.
Habt ihr vielleicht eine Idee, wo der Fehler liegt?
Vielen Dank.
f. G.
-
for(i = luecke + 1; i != 32; i++)
{
if(name[i] != 32)
{
nachname += name[i];
}
else break;
}sollte wohl i != length heißen, oder?
-
Oh, da habe ich mich wohl in der Zeile verguckt. Danke!
f. G.
-
Ein kleiner Inhaltlicher Fehler:
cout << endl << "Der Name ist " << lengh << " Buchstaben lang";Dies gibt die Länge des Vor- und Nachnamens aus + das Leerzeichen...
Außer du hast es so vorgesehen