Leerzeichen mit Map Problem
-
Hallo,
ich will mir ein Programm zum verwalten von virtuellen CDs schreiben.
Ich habe dazu eine Map verwendent.
Wenn man ein neues Image hinzufügt, will ich das man Leerzeichen eingeben kann, die dann im string gespeichert werden.case 3: { cout << "Name: "; getline(cin,name); cin.get(); cout << "Pfad: "; getline(cin,pfad); cin.get(); Image = make_pair(name, pfad); Liste.insert(Image); ofstream output ("Liste.vcb",ios::binary); anzahl=anzahl+1; output << anzahl << endl; for(i= Liste.begin(); i!= Liste.end(); ++i) { output << i->first << endl; output << i->second << endl; } output.close(); }break;
Aber immer wenn ich was mit Leerzeichen eingebe, hängt sich das Programm auf.
MxWvOx
-
Hallo
Glaub mit so wenig Code kann dir da niemand helfen.
mfg
-
Ok. Dann poste ich hier denn ganzen Code.
#include <iostream> #include <string> #include <fstream> #include <map> using namespace std; void menue(); void zuruck(); string prufung; int menu = 0; int main() { // Variablen int anzahl = 0; string name; string pfad; string mount_name; string mount_pfad; char mount_search; // Map erstellen map<string,string> Liste; map<string,string>::iterator i; pair<string,string> Image; // Images einlesen ifstream input ("Liste.vcb",ios::binary); if(!input) { anzahl = 0; } else { input >> anzahl; for(int i2=0;i2<anzahl;i2++) { input >> name; input >> pfad; Image = make_pair(name, pfad); Liste.insert(Image); } } input.close(); // Menü menue(); while(menu!=8) { // Menüpunkte switch(menu) { case 1: // Liste anzeigen { system("cls"); for(i= Liste.begin(); i!= Liste.end(); ++i) { cout << i->first << endl; } zuruck(); }break; case 2: // Image mounten { system("cls"); cout << "Image mounten: "; cin >> mount_name; mount_pfad = Liste[mount_name]; system(mount_pfad.c_str()); zuruck(); }break; case 3: // Image hinzufuegen { system("cls"); cout << "Name: "; //cin >> name; getline(cin,name); cin.get(); cout << "Pfad: "; //cin >> pfad; getline(cin,pfad); cin.get(); cout << name << endl; cout << pfad << endl; Image = make_pair(name, pfad); Liste.insert(Image); ofstream output ("Liste.vcb",ios::binary); anzahl=anzahl+1; output << anzahl << endl; for(i= Liste.begin(); i!= Liste.end(); ++i) { output << i->first << endl; output << i->second << endl; } output.close(); zuruck(); }break; case 4: // Image entfernen { system("cls"); cout << "Noch nicht vorhanden." << endl; zuruck(); }break; case 5: // Image suchen { system("cls"); cout << "Image suchen: "; cin >> name; i = Liste.find(name); if(i!=Liste.end() ) { cout << "Image wurde gefunden." << endl; cout << "Image mounten? (J/N) "; cin >> mount_search; if((mount_search == 'j') || (mount_search == 'J')) { mount_pfad = Liste[name]; system(mount_pfad.c_str()); } } else { cout << "Image existiert nicht." << endl; } zuruck(); }break; case 6: // Hilfe { system("cls"); cout << "Noch nicht vorhanden." << endl; zuruck(); }break; case 7: // Info { system("cls"); cout << "MW VirtualCDBook" << endl; cout << "Version 0.1" << endl; cout << "MWSoft" << endl; cout << "http://www.mwsoft.mine.nu" << endl; zuruck(); }break; case 8: // Beenden { return 0; }break; default: { cout << "Falsche Eingabe!" << endl; }break; } } return 0; } void menue() { cout << "#########################" << endl; cout << "# 1 = Liste anzeigen #" << endl; cout << "# 2 = Image mounten #" << endl; cout << "# 3 = Image hinzufuegen #" << endl; cout << "# 4 = Image entfernen #" << endl; cout << "# 5 = Image suchen #" << endl; cout << "# 6 = Hilfe #" << endl; cout << "# 7 = Info #" << endl; cout << "# 8 = Beenden #" << endl; cout << "#########################" << endl; cin >> menu; } void zuruck() { cout << "Belibige Taste druecken, um zum Menue zurueckzukehren !" << endl; cin >> prufung ; system("cls"); menue(); }
So, ich hoffe das mir jetzt jemand helfen kann.
MxWvOx