我尝试输入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。如何停止输入矢量并转到下一个变量?
答案 0 :(得分:0)
问题是第一个std::copy
调用会读取应该读入4
的{{1}}。因此,当您尝试读入N_dir
时,您会读取第一个字符串而输入操作将失败并且不会初始化N_dir
,从而使其不确定。
改为使用std::copy_n
:
N_dir