Zmiana znaków

0
string funkcja()
{
string z1;
AnsiString z2;

...
...
...

z2 = AnsiReplaceStr(z1.c_str(),"`","[.1]");
z2 = AnsiReplaceStr(z1.c_str(),"&","[.2]");
z2 = AnsiReplaceStr(z1.c_str(),"*","[.3]");
z2 = AnsiReplaceStr(z1.c_str(),"'","[.4]");
z2 = AnsiReplaceStr(z1.c_str(),"\"","[.5]");
z2 = AnsiReplaceStr(z1c_str(),"\\","[.6]");
z2 = AnsiReplaceStr(z1c_str(),"/","[.7]");

z1 = z2.c_str();

return z1;
}

Dlaczego nie zamienia mi znaków w łańcuchu?

0

Oczywiście literówka, zamiast z1c_str ma być z1.c_str.

Dlaczego wciąż nie zamienia mi znaków?

1

Ponieważ tylko ostatni replace ma znaczenie poprzednie owszem zastępują ale wynik ładują w z2 która się nadpisuje w kolejnej instrukcji.

0

Aaaa...

A mógłbyś przybliżyć jak to najlepiej rozwiązać? Bo robienie 7 innych zmiennych to chyba nienajlepszy pomysł.

0

Do kolejnych wywołań używaj z2. Tym sposobem po kolei pozamieniasz co tam chcesz. Więcej nie wiem, bo nie wiem co to za funkcja, być może da się to w ogóle napisać inaczej.

0

W sumie jak napisałem jedno

z2 = AnsiReplaceStr(z1.c_str(),"/","[.7]");

To i tak nie działa funkcja....

Funkcja ma za zadanie zmienić mi wszystkie / na **[.7] ** w łańcuchu z1.

0

z2 = AnsiString(z1.c_str());
z2 = AnsiReplaceStr(z2,"","[.1]"); z2 = AnsiReplaceStr(z2,"&","[.2]"); z2 = AnsiReplaceStr(z2,"*","[.3]"); z2 = AnsiReplaceStr(z2,"'","[.4]"); z2 = AnsiReplaceStr(z2,"\"","[.5]"); z2 = AnsiReplaceStr(z2,"\\","[.6]"); z2 = AnsiReplaceStr(z2,"/","[.7]"); lub: z2=AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiString(z1.c_str()),"","[.1]"),"&","[.2]"),"*","[.3]"),"'","[.4]"),""","[.5]"),"\","[.6]"),"/","[.7]");

1 użytkowników online, w tym zalogowanych: 0, gości: 1