#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <cstddef>
#include <iterator>
using namespace std;
namespace impl {
struct LineReader: string {};
istream & operator >> (istream & is, LineReader& line) {
return getline(is, line);
}
}
std::size_t countTwoCycle(istream& is) {
using iIt = istream_iterator<impl::LineReader>;
return count_if(iIt(is), iIt(), [](const string & line) {
auto midIter = line.cbegin() + line.size() / 2;
return equal(line.cbegin(), midIter, midIter, line.cend());
});
}
int main() {
ifstream file{"/tmp/plik.txt"};
// TODO: Sprawdzenie poprawności otwarcia pliku
cout << "W pliku jest " << countTwoCycle(file) << " wierszy dwucyklicznych.\n";
}