//: C03:Replace.cpp
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
#include <cassert>
#include <cstddef>  // kvůli size_t
#include <string>
using namespace std;

void nahradZnaky(string& zmenMe,
  const string& najdiMe, const string& noveZnaky) {
  // Prohledat zmenMe kvůli vyhledávanému textu,
  // začít od pozice 0:
  size_t i = zmenMe.find(najdiMe, 0);
  // našli jsme žetězec, který se má nahradit?
  if(i != string::npos)
    // Nahradit nalezený text řetězcem noveZnaky:
    zmenMe.replace(i, najdiMe.size(), noveZnaky);
}

int main() {
  string velkaNovina = "Já myslel, že jsem viděl UFO, které uneslo Elvise. "
                   "Příliš jsem pracoval.";
  string nahrazka("monstrum");
  string najdiMe("UFO");
  // najít "UFO" v žetězci velkaNovina a přepsat to:
  nahradZnaky(velkaNovina, najdiMe, nahrazka);
  assert(velkaNovina == "Já myslel, že jsem viděl "
										"monstrum, které uneslo Elvise. Příliš jsem pracoval.");
} ///:~
