读取用空格分隔的输入数字并保存到数组中

Read input numbers separated by space and save into an array

本文关键字:保存 数组 数字 输入 空格 分隔 读取      更新时间:2023-10-16

我必须写一个程序,从键盘上读取一行数字并将其保存到数组中,数字必须只写在一行中,我写了这个,但由于无限循环而无法工作,有什么建议吗?

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

如果你知道你要读多少个数字,有一种更简单的方法:

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

经过修改,它就可以工作了。

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;
}

给有同样问题的人。

#include<iostream>
using namespace std; 
int main() 
{   
    int n;
    cout << "input numbers" << endl;
    cin >> n; 
    vector<int> v(n);
    for ( int i=0; i<n; ++i )
    {
        cin >>v[i];
    } 
    return 0; 
}