C++ Vokale aus Datei entfernen

AirForce

Lt. Junior Grade
Registriert
Okt. 2010
Beiträge
296
Schreiben ein Programm das alle Vokale aus einer Datei entfernen soll. Dabei habe ich zwei Probleme, erstens der Compiler sagt das bei line=''; eine leere Zeichenkonstante ist, und ich bekomme keine Ausgabe.
Code:
int main()
{
    cout << "Geben Sie bitte den Namen der Eingabedatei ein:";
	string name;
	cin>>name;
	ifstream istr(name.c_str(),ios_base::in);
	if(!istr) cout << "Fehler beim Oeffnen der Eingabedatei" << endl;

	string line;
	getline(cin,line);
	for (int i = 0; i<line.size();++i)      
		switch(line[i]){
		case'E':case'e':case'A':case'a':
		line[i]='';  // hier der Fehler
	}
	
	stringstream ss(line);
	vector<string> vs;
	string word;
	while(ss>>word)
	vs.push_back(word);
	cout << word;   // keine Ausgabe

	keep_window_open();
        return 0;
}

Der Inhalt der Textdatei:
Code:
Es war einmal!
 
Du kannst nicht einfach ein Zeichen zu "nichts" machen. Du musst das ganze, bzw. die Zeichen, die du willst, in einen zweiten Puffer schmeissen.
 
string nix='';
string line;
for (int i = 0; i<line.size();++i)
switch(line){
case'E':case'e':case'A':case'a':
line=nix; }

ich denke mal so wars gemeint.
 
Ja so etwas, aber man kann kein string in char konvertieren.
 
ok, mal ein einfacher Vorschlag:
1. du liest Zeichenweise aus der Datei
2. du überprüfst ob das Zeichen ein Vokal ist
3. ist es das nicht, dann appendest du das Zeichen in den stringstream

Also so in der Art - geb jetzt auf die schnelle keinen Garant auf syntaktische Richtigkeit :)
Code:
std::ifstream in(…);
std::stringstream content;
std::string tmp;
while(in) {
in >> tmp;
switch(tmp.c_str()) {
  case "a":
  case "A":
  …
  // do nothing with vocals
  break;
 default:
  //process consonants
  content << tmp;
  break; 
}
}
std::cout << content.str() << std::endl;//debugging output
 
Habe die Ausgabe korrigiert doch es gibt weiter keine Ausgabe.
Code:
stringstream ss(line);
vector<string> vs;
string word;
while(ss>>word)
	vs.push_back(word);
for (int i = 0;i<vs.size();++i)
cout << vs[i] << endl;
 
sicher, dass was eingelesen wurde? Was hat Vector für eine Größe?
 
Habe das Problem gelöst.
 
Zuletzt bearbeitet:
Zurück
Oben