为什么我的整数不能传输到数组?

时间:2019-07-14 15:50:28

标签: c++

我想制作一个程序,该程序可以使用使用空格输入而不输入的整数。当您输入整数12 80 33 99,并且每个整数之间都有空格时,代码将分隔整数并将它们放入数组中。

我正在使用C ++代码块

int main(){
int A;
int j [10] ={0,0,0,0,0,0,0,0,0,0};
cin >> A;
string As;
bool code = true;
int hasil [A][10];
getline(cin,As);
    for (int i = 0 ; i < A ; i++){

        while (code){

            if( cin.get() != '\n'){

            cin >> hasil[i][j[i]];
            j[i]++;

            }else{ code = false;}
    }}
    for (int i = 0 ;i < A ; i++){
        for (int x = 0; x != j[i]; x++){
            cout << hasil[i][x]<< " " ;
        }
        cout << " " << endl;
    }
return 0;}

当我输入25 17 70 88时,我希望输出也为25 17 70 88,但实际输出为5 17 70 88。我的第一个2在哪里?

2 个答案:

答案 0 :(得分:2)

您的2被对cin.get()的调用所吞噬,该调用读取一个字符,然后您的代码将其丢弃。

答案 1 :(得分:0)

我无法确切了解您要执行的操作,但是我看到您的代码中存在错误,可能会导致未定义的行为。 int hasil[A][10]是一个静态数组,这意味着编译器必须在编译时知道其大小,但是A不是编译时常数。如果您不知道数组的大小,则应改用指针,甚至最好使用诸如std::vector之类的std容器。 为了使代码更具可读性,您还可以删除code变量,并将第一个for循环主体替换为

while(cin.get() != '\n)
{
   cin >> .....
   ...
}