string zamiana 1 znaku na kilka

0

Mam mały problem, ponieważ chce sobie zamienić 1 znak w stringu na kilka np. "a" na "???" próbowałem użyć tego:

 
#include <iostream>
#include <conio.h>
using namespace std;
 int main()
 {         
   string tekst;        
   cout<<"podaj string ";
   getline(cin,tekst);
    for(int i=0;i<tekst.length();i++)
      if(tekst[i]=='a')tekst[i]='???';
    cout<<tekst;    
 getch();
 return 0;                                         
}

lecz nie działa :/

0

Obecnie nie ma prawa działać bo próbujesz do char-a wsadzić 3 znaki. Jak byś chciał zrobić to sam, potrzebowałbyś 2 stringa na wynik, i do niego albo przenosił ten sam znak, albo dodawał na koniec zamieniony w zależności od znaku

0

jeśli dobrze rozumiem to tutaj trzeba podać skąd dokąd ma zamieniać te znaki, a ja chciałem żeby w całym stringu mi je zmieniało

0
sig napisał(a):

Obecnie nie ma prawa działać bo próbujesz do char-a wsadzić 3 znaki. Jak byś chciał zrobić to sam, potrzebowałbyś 2 stringa na wynik, i do niego albo przenosił ten sam znak, albo dodawał na koniec zamieniony w zależności od znaku

mógłbyś pokazać mniej więcej jak to zrobić? (dopiero zaczynam się bawić c++ i trochę zielony jestem :p)

1
#include <iostream>
#include <string>
using namespace std;

void replace_all(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length();
    }
}

int main() {
	string str = "hello $name";
	replace_all(str, "$name", "abraham");
	replace_all(str, "a", "???");
	cout << str;
	return 0;
}

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