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


Log in to reply