免责声明:真正的代码不应该包含我将要使用的注释。(它也不应该如此固执地神秘。)
我添加了一个函数体和必要的标题。
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
int main()
{
// Construct a file stream object
ifstream inputfile;
// Open a file
inputfile.open("inputfile.txt");
// Construct a string object
string m;
// Read first line of file into the string
getline(inputfile, m);
// Copy the string into a stringstream so that we can
// make use of iostreams' formatting abilities
std::stringstream ss(m);
// Construct an iterator pair. One is set to the start
// of the stringstream; the other is "singular", i.e.
// default-constructed, and isn't set anywhere. This
// is sort of equivalent to the "null character" you
// look for in C-style strings
std::istream_iterator<std::string> begin(ss);
std::istream_iterator<std::string> end;
// Construct a vector by iterating through the text
// in the stringstream; by default, this extracts space-
// delimited tokens one at a time. The result is a vector
// of single words
std::vector<std::string> vstrings(begin, end);
// Again using iterators (albeit un-named ones, obtained
// with .begin() and .end()), stream the contents of the
// vector to STDOUT. Equivalent to looping through `vstrings`
// and doing `std::cout << *it << "\n"` for each one
std::copy(
vstrings.begin(),
vstrings.end(),
std::ostream_iterator<std::string>(std::cout, "\n")
);
// Blocks the application until it is forcibly terminated.
// Used because Windows, by default, under some circumstances,
// will close your terminal after the process ends, before you
// can read its output. However: THIS IS NOT YOUR PROGRAM'S
// JOB! Configure your terminal instead.
while (true) {}
}
可以说,这不是打印到控制台的最佳方式,换行符分隔,在磁盘上文本文件的第一行找到的每个标记。请不要从互联网上逐字复制代码并期望红海分开。