Zeichen im String austauschen

Kaiser206

Erfahrenes Mitglied
Hallo,

gibt es eine funktion die in einem String zeichen auswechsel?

Bei PHP heißt strtr("abcde","e","d")

gibts die auch für c++?
 
Ich will folgendes erreichen.

Ich habe eine Variable:

Code:
char* text = "Hallo_Welt!";

Ich will aus ihr den Text: "Hallo Welt!" erhalten. Ich muss also das "_" durch ein " " ersetzen. Das Problem ist das ich immer verschiedene sätze verwende und die zu ersetzenden Zeichen immer an verschiedenen Stellen liegen.
 
Hallo,
Code:
  AnsiString a="Hallo_Welt!";
  for(int i=1;i<=a.Length();i++)
  {
  char finde = a[i];
  if ( finde == '_' )
  {
  a[i] = ' ' ;
  AnsiString b = a ;  //in b steht jetzt Hallo Welt! 
  }
  }

Gruß Daniel
 
Was für *.h und *.lib muss man eigendlich benutzen damit man "AnsiString" im Programm anwenden kann?
 
Zuletzt bearbeitet:
Hi.
Kaiser206 hat gesagt.:
Ok, jetzt klappt alles.

Es gibt aber noch ein Problem.

Wie wandle ich jetzt den String in ein char um?
Du meinst in einen char* - also einen Pointer auf char, oder?

Du kannst einen konstanten char* mit Hilfe der Funktion c_str des Strings bekommen.
Code:
string hallo = "hallo";
const char* str = hallo.c_str();

Du kannst den Wert über den char* nicht verändern. Wenn du das willst mußt du den String erst mit der Funktion strcpy kopieren (und vorher genug Speicher allozieren und auch wieder selbst freigeben).

Gruß
 
achso danke!
ich habe das "const" vergessen...

Und noch eine Frage:

text.replace(text.find("_"), 1, " ");

vertauscht nur ein zeichen. Ich muss jetzt aber mehrere "_" austauschen. Wie kann ich zählen wie oft das "_" in einem string vorkommt?
 
Zuletzt bearbeitet:
Naja, am besten nimmst du einfach replace:
Code:
#include <algorithm>

using namespace std;

string hallo = "hallo_welt_hier_bin_ich";

replace (hallo.begin(), hallo.end(), '_', ' ');

cout << hallo << endl;

Gruß
 
Zurück