重复地重定向std :: cin流

时间:2015-02-25 20:17:04

标签: c++ redirect inputstream stdin

我想从* .txt中读取输入的第一部分,并从用户手动获取其余部分。 例如:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string a[100];
    for (int i=0;i<100;i++)
        cin >> a[i];
    for (int i=0;i<100;i++)
        cout << a[i] << endl;
}

如果我运行上面的代码,如./a.out&lt; input.txt中 例如,input.txt只包含10个单词,我如何将输入流重定向回控制台,以便我从用户那里得到其余部分?

1 个答案:

答案 0 :(得分:0)

你说:

  

我想从* .txt中读取输入的第一部分,并从用户手动获取其余部分。

如果这是唯一的要求,我建议改变策略。

  1. 从命令行获取输入文件的名称。
  2. 尽可能多地从文件中读取数据。
  3. 然后切换到从cin读取其余数据。
  4. 例如:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(int argc, char** argv)
    {
       string a[100];
       int count = 0;
    
       if ( argc > 1 )
       {
          ifstream infile(argv[1]);
          while (count < 100)
          {
             infile >> a[count];
             if ( infile )
             {
                ++count;
             }
             else
             {
                break;
             }
          }
       }
    
       for (int i=count;i<100;i++)
          cin >> a[i];
       for (int i=0;i<100;i++)
          cout << a[i] << endl;
    }