2015-11-28 9 views
0

Мне нужно написать программу, которая читает с клавиатуры строку чисел и сохраняет их в массиве, цифры должны быть написаны просто в строке, я написал это, но не работает из-за бесконечного цикла, какого-либо предложения?Чтение номеров ввода, разделенных пробелом, и сохранение в массив

int main() { 

    int numCasos = 0, contNumCasos = 0, numElem = 0; 
    string aux; 
    cout << "Number of cases: " << endl; 
    cin >> numCasos; 
    while (contNumCasos < numCasos) { 

     cout << "Number of elements: " << endl; 
     cin >> numElem; 
     cout << "Enter the Elements separated by space: " << endl; 
     cin.ignore(); 
     vector.cont = 0; 
     int i = 0; 
     while ((vector.cont < numElem) && getline(cin,aux,' ')){ 
      vector.v[i] = stoi(aux); 
      vector.cont++; 
      i++; 
     } 
    } 

    cout << sumaBuenos(vector) << endl; 
    cin.ignore(); 
    system("pause"); 
    return 0; 
} 

Пример:
консоли: Количество элементов:
пользователя: 4
консоли: введите элементы, разделенные пробелами:
пользователя: 2 43 65 56
- это должен быть вектор
- vector.v [0] = 2
- vector.v [1] = 43
- vector.v [2] = 65
- vector.v [3] = 56

+0

Кажется довольно многословен заменителем 'станд: вектор ввода {станд :: istream_iterator (станд: : cin), std :: istream_iterator ()}; ' –

+0

Поиск в Интернете возможных дубликатов:' stackoverflow C++ read file vector space separate'. –

+0

Я искал, но решения, которые они дали, это прочитать из файла, мне нужно прочитать с клавиатуры – kriptor

ответ

0

, если вы знаете, сколько чисел вы должны прочитать есть более простой способ:

int n; 
cin>>n; // how many numbers; 
vector<int> v(n); 
for (int i=0; i<n; ++i){ 
    cin>>v[i]; 
} 
+0

Да, спасибо, я попробовал эту флирт, но он не работал, теперь это так, я не знаю почему. – kriptor

0

С модификацией он работает.

int main() { 

    int numCasos = 0, contNumCasos = 0, numElem = 0; 
    string aux; 
    cout << "Numero de casos: " << endl; 
    cin >> numCasos; 
    while (contNumCasos < numCasos) { 

     cout << "Numero de elementos: " << endl; 
     cin >> numElem; 
     cout << "Ingrese los elementos separados por espacios: " << endl; 
     cin.ignore(); 
     vector.cont = 0; 
     getline(cin, aux); 
     istringstream iss(aux); 
     for (int i = 0;i < numElem;i++) { 
      iss >> aux; 
      vector.v[i] = stoi(aux); 
      vector.cont++; 
     } 
     cout << sumaBuenos(vector) << endl; 
     contNumCasos++; 
    } 

    system("pause"); 
    return 0; 
} 

Кому-то, у кого такая же проблема.

+0

Нет необходимости в stringstream, getline, aux или stoi. – user4581301

Смежные вопросы