我想制作一个程序,该程序可以使用使用空格输入而不输入的整数。当您输入整数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
在哪里?
答案 0 :(得分:2)
您的2
被对cin.get()
的调用所吞噬,该调用读取一个字符,然后您的代码将其丢弃。
答案 1 :(得分:0)
我无法确切了解您要执行的操作,但是我看到您的代码中存在错误,可能会导致未定义的行为。 int hasil[A][10]
是一个静态数组,这意味着编译器必须在编译时知道其大小,但是A不是编译时常数。如果您不知道数组的大小,则应改用指针,甚至最好使用诸如std::vector
之类的std容器。
为了使代码更具可读性,您还可以删除code
变量,并将第一个for循环主体替换为
while(cin.get() != '\n)
{
cin >> .....
...
}