书中页数:P285 代码名称:fileIO.cc
#include <iostream> using std::cerr; using std::cout; using std::endl; #include <fstream> using std::ifstream; #include <string> using std::string; #include <stdexcept> using std::runtime_error; void process(ifstream &is) { string s; while (is >> s) cout << s << endl; } int main(int argc, char* argv[]) { // for each file passed to the program for (auto p = argv + 1; p != argv + argc; ++p) { ifstream input(*p); // create input and open the file if (input) { // if the file is ok, ``process'' this file process(input); } else cerr << "couldn't open: " + string(*p); } // input goes out of scope and is destroyed on each iteration auto p = argv + 1, end = argv + argc; ifstream input; while (p != end) { // for each file passed to the program input.open(*p); // open the file, automatically clears the stream if (input) { // if the file is ok, read and ``process'' the input process(input); } else cerr << "couldn't open: " + string(*p); input.close(); // close file when we're done with it ++p; // increment pointer to get next file } return 0; }