C++ Sonderzeichen(\r\n\t) aus Strings entfernen

HerrMann

Grünschnabel
Hallo an alle,

wie kann ich diese Sonderzeichen (\r\n\t) aus einem String entfernen

Ich lese mit Linux Daten aus einer Windows-INI Datei aus und diese haben eben das \n\r am Ende jeder Zeile (aber eben auch nich immer).

kann mir jemand weiterhelfen

Danke
 
Hy!

Wenn du in C++ mit einer Stringklasse arbeitest, müsste das mit
Code:
string strMyString;
strMyString.Remove( "\r");
funktionieren, die anderen Steuerzeichen auch entsprechend.

Wenn du mit einem Char-Vektor arbeitest könntest du einen zweiten Vektor anlegen und dann Zeichen für Zeichen von einem String in den anderen kopieren.
Code:
char szString1[50], szString2[50];
int i, j;

for( i = 0, j = 0; i < 50 && j < 50 && szString[i] != 0; i++, j++) {
  if( szString[j] == "\r" || szString[j] == "\n") {
    i--;
    continue;
  }
  szString[i] = szString[j];
}

habs jetzt nur so runtergetippt, sollte aber vom Prinzip funktionieren

mfg
uhu01
 
Danke für die schnelle Antwort

mit remove() ging das irgendwie nich keine Ahnung warum
er sacht immer beim compilieren remove is nich deklariert

#include <string> war eingebunden

ich habs anders gelöst

int lr = line.find("\r",1);
if (lr != -1) line.erase(lr,2);

is zwar nich das wahre aber es funktioniert
 
Code:
mit remove() ging das irgendwie nich keine Ahnung warum
er sacht immer beim compilieren remove is nich deklariert

Es liegt daran, dass string bzw. std::string keine remove()- oder Remove()- Methode besitzt. Informationen zu den Methoden von std::string findet man in der MSDN unter "basic_string", von dem std::string ein spezialisiertes Typedef ist, falls man das so sagen kann.
 
moin


Die MSDN ist eine Sammlung/Referenz in der alles steht was du speziell mit Windows Compilern machen kannst. Fast alles lässt sich aber auch auf andere Compiler übertragen, das standart C/C++ Zeugs aufjedenfall.

http://msdn.microsoft.com


mfg
umbrasaxum
 
Zurück