//: C04:Strfile.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.
// Proudový vstup/výstup se sobory;
// Rozdíl mezi get() a getline().
#include <fstream>
#include <iostream>
#include "../require.h"
using namespace std;

int main() {
  const int SZ = 100; // velikost bufferu;
  char buf[SZ];
  {
    ifstream in("Strfile.cpp"); // načíst
    assure(in, "Strfile.cpp"); // Ověřit otevření
    ofstream out("Strfile.out"); // zapsat
    assure(out, "Strfile.out");
    int i = 1; // počítadlo řádek

    // méně pohodlný přístup pro řádkový vstup
    while(in.get(buf, SZ)) { // nechat na vstupu \n
      in.get(); // zahodit následující znak (\n)
      cout << buf << endl; // musí se přidat \n
      // Souborový výstup stejný jako standardní vstup/výstup:
      out << i++ << ": " << buf << endl;
    }
  } // destruktor zavře in a out

  ifstream in("Strfile.out");
  assure(in, "Strfile.out");
  // Pohodlnější řádkový vstup
  while(in.getline(buf, SZ)) { // Odstranit \n
    char* cp = buf;
    while(*cp != ':')
      ++cp;
    cp += 2; // Za ": "
    cout << cp << endl; // I zde se musí přidat \n
  }
} ///:~
