我想,每个人一开始遇到这个问题,都会觉得挺简单的。但真正实施的时候,可能就会觉得还是有点坑的。毕竟对于C/C++这样成熟而使用广泛的语言而言,对于这个简单的问题竟然没有一个简洁有力甚至一行代码的解决方案,依然是让人觉得挺震惊的。
在 C/C++ 中,由于整数读取通常是会忽略空格、制表符、换行符等等的,所以当一行整数为不定数目的读取时,事情就变得有点棘手了。
由于对换行符的忽略,你无法判断此时行是否结束。
在C++中,我们通常可以直接把 cin 读取的返回作为条件判断以此来判断输入是否成功,不成功则不再继续 cin 从而退出循环,来完成对不定数目数据的读入。
一开始可能会这样想:while (cin >> a[n++]);
然后正如上述对换行符的忽略,换行之后 cin 并没有 fail (可参考 cin.fail() 方法)。
然后可能会有如下想法:

1 int temp; 2 while (true) 3 { 4 cin >> temp; 5 if (temp == '') break; 6 a[n++] = temp; 7 }
在 C/C++ 中,由于整数读取通常是会忽略空格、制表符、换行符等等的,所以当一行整数为不定数目的读取时,事情就变得有点棘手了。
由于对换行符的忽略,你无法判断此时行是否结束。
在C++中,我们通常可以直接把 cin 读取的返回作为条件判断以此来判断输入是否成功,不成功则不再继续 cin 从而退出循环,来完成对不定数目数据的读入。
一开始可能会这样想:while (cin >> a[n++]);
然后正如上述对换行符的忽略,换行之后 cin 并没有 fail (可参考 cin.fail() 方法)。
然后可能会有如下想法:

1 int temp; 2 while (true) 3 { 4 cin >> temp; 5 if (temp == '') break; 6 a[n++] = temp; 7 }
