c++ stringvariablen inhalt löschen [bin ich dumm?^^]

Jo wie gesagt ich möchte den inhalt einer stringvariable löschen doch irgentwie haut des net hin xD.


wenn ichs mit
Code:
string befehl="";
mache wirds zu einem blank also einem abstand
wenn ichs
Code:
string befehl=0;
mache beendet das programm um zu erklären wofür ich das brauche

so inetwas sieht das ganze aus:
der user gibt den code ein:
Code:
//Eingabe der Befehle
string eingabe()
{
   system("cls");
   string befehl;
   string abstand="\n";
   string befehl2;
 
 
   cout<<"Befehl eingeben:  ";
   getline(cin,befehl);
   befehl2=befehl+abstand;
 
   
   return schreiben(befehl2);
}

code wird in einen datei geschrieben und man wird gefragt ob man noch einen befehl eingeben will:
Code:
//in script.txt schreiben
string schreiben(string befehl2)
{

   int auswahl=0;
   string command=befehl2;
   fstream file;
   file.open("script.txt", ios::app | ios::out);
   file<<command;
   file.close();
   cout<<"\tNoch einen Befehl ausführen?\n";
   cout<<"(1 = JA) (2=NEIN)";
   cin>>auswahl;
    
   switch(auswahl)
   {
   case 1: eingabe();
   break;
   case 2: rename();
   break;
}

bei 1 zurück zu eingabe() bei 2 funktion rename():
Code:
//script.txt -> script.bat
int rename()
{
   system("RENAME script.txt *.bat");
   cout<<"Erstelle Script ";
   int i;
    for(i=1;i<10;i++)
    {
                     cout<<".";
                     Sleep(500);
    }      
   system("cls");
   cout<<"Script erfolgreich erstellt";
   system("PAUSE >NUL");
}


wo der fehler liegt weis ich ja nur ka wie ich ihn beheben kann :(


btw. jaja ichweis system(xxx) is böse is aber nur für windows gedacht also "who cares?" ;)
 
hmm funzt noch immer nich :(
Das Ganze Proggie sieht so aus:
Code:
#include <fstream>
#include <iostream>
#include <string>
#include <windows.h>

using namespace std;
string schreiben(string befehl2);
int rename();
string eingabe();

int main()

{
    system("title Gries Batchscript Hilfe v1.0");
    //Ladebalken//
    system("color 0c");
    cout<<"Lade Gries Batchscript Hilfe v1.0!";
    Sleep(1500);
    int i;
    cout<<"\n\n\n\n\n"<<"0%__10%__20%__30%__40%__50%__60%__70%__80%__90%__100%\n";
    for(i=1;i<52;i++)
    {
                     cout<<"#";
                     Sleep(45);
    }      
   //Hauptmenu
   system("cls");
   system("color 0a");
   cout<<"\t\t++Das ist die Gries Batchscript Hilfe v1.0++\n";
   cout<<"\t    ++Das Eingabe Fenster oeffnet sich in 3 Sekunden++";
   Sleep(3000);
   eingabe();
   
    
   system("PAUSE >NUL");
   return 0;
}
//in script.txt schreiben
string schreiben(string befehl2)
{
int auswahl;
   
   string command=befehl2;
   fstream file;
   file.open("script.txt", ios::app | ios::out |ios::ate);
  

   file<<command;

   
   
   file.close();
   cout<<"\tNoch einen Befehl ausfuehren?\n";
   cout<<"(1 = JA) (2=NEIN)";
   cin>>auswahl;
   
   switch(auswahl)
   {
   case 1: return eingabe();
   break;
   case 2: rename();
   break;
}

return "Exit Succesfull";
}
    

//script.txt -> script.bat
int rename()
{
   system("RENAME script.txt *.bat");
   cout<<"Erstelle Script ";
   int i;
    for(i=1;i<10;i++)
    {
                     cout<<".";
                     Sleep(500);
    }      
   system("cls");
   cout<<"Script erfolgreich erstellt";
   system("PAUSE >NUL");
   return 0;
}
//Eingabe der Befehle
string eingabe()
{

   system("cls");

   string befehl;
   string befehl2;
   befehl.erase();    //String Inhalte löschen
   befehl2.erase();
   string abstand="\n";
 
   cout<<"Befehl eingeben:  ";
   getline(cin,befehl);
   befehl2=befehl+abstand;
 
   
   return schreiben(befehl2);
}


jaja ich hab grad die Sleep funktion entdeckt und gemerkt was man damit tolles machen kann..^^
trotzdem geht er anstatt "getline(cin,befehl);" gleich zu schreiben(befehl2) über

-> siehe screenshot
 
Windows schickt immer zwei Zeichen "\r\n" beim Enter.
cin >> bla;
liest aber nur den Wert, ohne ein evtl anhängendes \r oder \n, das wird dann vom nächsten getline als eine leere Zeile interpretiert...
cin.ignore();
kann helfen...

außerdem... versuch mal eine 1 oder 2 einzugeben... (nicht den char '1', den char mit dem dezimalwert 1... ;) )

Und der Platz kommt vom Tabulator vor der zweiten Ausgabe... getline gibt nämlich nichts aus...
 
Zurück
Oben