Как заполнить два вектора один за другим в c ++ из пользовательского ввода, используя циклы while - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь заполнить 2 вектора в cpp из пользовательского ввода.Но как только я запускаю свою программу, заполняется только первый вектор, и после этого программа завершает выполнение.Из того, что я вижу, cout также выполняется, так что проблема может быть в буфере где-то, который не позволяет вводу войти. Заранее спасибо.

 while(cin >> temp) {
 v1.push_back(temp);
 }
 cout<<"test 2"<<endl;


 while(cin >> temp2) {
 v2.push_back(temp2);
 }

1 Ответ

0 голосов
/ 26 апреля 2019

Я думаю, что вы должны увидеть проблему с другой точки зрения. Как я понимаю из предоставленного кода, который является неполным, как было упомянуто в комментариях, вы пытаетесь заполнить вектор типа int, но вы не знаете, сколько элементов вы собираетесь хранить. I предложил бы разбор строки с клавиатуры с таким количеством целых чисел, сколько хочет пользователь. А затем, используя std :: stringstream из потоковой библиотеки, вы можете получить все целые числа, включенные в эту строку. Вот простая реализация того, что я пытаюсь сказать:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

string s;

stringstream iss( s );
cin>>s; //Write the numbers divided by space
getline(cin,s);
int number;
vector<int> n;
while ( iss >> number )
n.push_back( number );

Содержанием вектора будут все числа, которые вы ввели в строку. Надеюсь, что это решит вашу проблему.

...