Как правильно ввести int, вектор int, int и вектор строки

Я пытаюсь ввести 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 в качестве вывода. Я предполагаю, что первый векторный ввод не завершается, когда я вводю «4» в N_dir. Как мне прекратить вводить вектор и перейти к следующей переменной?

0

Решение

Проблема в том, что первый std::copy звонок будет читать 4 это должно быть прочитано в N_dir, Поэтому, когда вы пытаетесь прочитать в N_dir вместо этого вы читаете первую строку, и операция ввода не будет выполнена и не будет инициализирована N_dirоставляя это неопределенным.

использование std::copy_n вместо:

std::copy_n(std::istream_iterator<int>(std::cin), N_num,
std::back_inserter(v));
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector