如何正确输入int,int的int,int和vector的向量

时间:2016-10-08 12:33:34

标签: c++ vector input

我尝试输入2个数字(int)和2个向量(int,string):

   int N_num;
   int N_dir;
   vector<int> v;
   vector<string> v1;
   std::cin >> N_num;
   std::copy(std::istream_iterator<int>(std::cin), 
       std::istream_iterator<int>(),std::back_inserter(v));
   std::cin >> N_dir;
   std::copy(std::istream_iterator<string>(std::cin),
       std::istream_iterator<string>(), std::back_inserter(v1));

我的意见是:

3
1 4 5
4
T M M R

然后我输入N_dir(= 4),得到-858993460作为输出。我的猜测是,当我输入&#34; 4&#34;时,第一个矢量输入不会终止。到N_dir。如何停止输入矢量并转到下一个变量?

1 个答案:

答案 0 :(得分:0)

问题是第一个std::copy调用会读取应该读入4的{​​{1}}。因此,当您尝试读入N_dir时,您会读取第一个字符串而输入操作将失败并且不会初始化N_dir,从而使其不确定。

改为使用std::copy_n

N_dir