//: C04:Istring.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.
// Vstupní řetězcové proudy
#include <cassert>
#include <cmath>  // Kvůli fabs()
#include <iostream>
#include <limits> // Kvůli epsilon()
#include <sstream>
#include <string>
using namespace std;

int main() {
  istringstream s("47 1.414 Toto je test");
  int i;
  double f;
  s >> i >> f; // Vstup oddělený prázdnými znaky
  assert(i == 47);
  double relerr = (fabs(f) - 1.414) / 1.414;
  assert(relerr <= numeric_limits<double>::epsilon());
  string buf2;
  s >> buf2;
  assert(buf2 == "Toto");
  cout << s.rdbuf(); // " je test"
} ///:~
