我正在使用Microsoft Visual C++编写程序,希望程序能够使用istream_iterator
从标准输入或文件中读取数据。在网上搜索并没有找到我认为应该很简单的方法。例如,我可以轻松地编写以下代码从标准输入中读取数据:
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
istream_iterator<string> my_it(cin);
for (; my_it != istream_iterator<string>(); my_it++)
printf("%s\n", (*my_it).c_str());
}
或者我可以编写以下代码并从文件中读取:
#include <iostream>
#include <string>
#include <iterator>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
ifstream file(argv[1]);
istream_iterator<string> my_it(file);
for (; my_it != istream_iterator<string>(); my_it++)
printf("%s\n", (*my_it).c_str());
}
但是我该如何将这两者结合起来,以便简单的(argc == 2)
检查可以让我使用文件流或标准输入初始化我的输入流迭代器,并继续进行下去呢?