Tabulator aus String löschen
-
hi,
ich habe folgendes Problem. Ich habe einen beliebigen String, der unter Umständen ein oder mehrere Tabulator-Zeichen enthält.
Diese möchte ich aus dem String entfernen und statt dem Tab-Zeichen ein Leerzeichen einfügen.Aber schon alleine das finden eines Tabulator-Zeichens klappt nicht (also die if-Bedingung).
Hier mein code:string str = "aksöfla kasd lkadf"; while (..solange ein Tab-Zeichen gefunden wurde..) { for (int i = 0; i < str.length(); i++) { if (str[i] = '\t') { // tab rauslöschen und Leerzeichen einfügen } } }
Danke schonmal im Vorraus.
GrüßeNimrod
-
Du musst den Tab im String natürlich auch als \t speichern und nicht als x Leerzeichen.
-
Folgendes Szenario:
Ich habe ein Textdatei, die ich über getline einlese.
jede zeile ist dann natürlich ein string.bevor ich nun den string in eine liste schreibe, möchte ich, dass dieser String frei von Tabulatoren ist. Wenn derjenige, der die Datei geschrieben hat, Tabulatoren benutzt, dann muss es doch möglich sein diese wieder rauszulöschen.
Gruß Nimrod
-
wozu ist den das while?
was macht er den wenn er den tabulator nicht findet? läft er überhaupt durch den string?
-
if (str[i] == '\t'){
// tab rauslöschen und Leerzeichen einfügen
}
-
du hast ein einfache = verwendet!!!!!!!
string str = "aksöfl akasd lkadf"; for (int i = 0; i < str.length(); i++) { if (str[i] == '\t') { str[i] = ' '; } }
-
@anaconda: ja das war ein schreibfehler, es heißt natürlich '=='. aber das ändert auch nichts.
@pi88el: ja er läuft auf jeden fall einmal durch. aber die while schleife kann man sich auch wegdenken. es geht einfach darum, dass wenn ein string aus einer datei eingelesen wird, der ein oder mehrere tab-zeichen enthält, ich diese zeichen nicht rausbekomme.
-
sind es bei dir den überhaupt tabs?
versuch malstring str = "aksöfl\takasd\tlkadf";
-
Hallo Nimrod,
ich unterstelle mal, dass die Tabulatoren mit niiht nur einem, sondern soviel Leerzeichen ersetzt werden sollen, als wenn Tabulatoren benutzt worden wären. Dann könnte es etwa so aussehen:
#include <iostream> #include <algorithm> #include <string> int main () { using namespace std; string in("Das\tis'n\tText\tmit'n\tpaar\tTabulatoren"); // nur für Test const int tabSize = 4; for( string::iterator i; in.end() != (i = find( in.begin(), in.end(), '\t' )); ) { in.replace( i, i+1, string( tabSize - distance( in.begin(), i ) % tabSize, ' ' ) ); } cout << "0123456789012345678901234567890123456789" << endl; cout << in << endl; return 0; }
Jeder Tabulator wird durch mindestens ein Leerzeichen ersetzt.
Gruß
Werner
-
okay funktioniert jetzt, war wohl ein fehler beim löschen.
danke nochmal..