本来以为 while (cin >> a[n++]);
可以直接读入一行结束,但是发现根本无法退出循环,用VS调试到行尾就看不到内容了,而此时循环没有退出也没有报错。大概是把换行符当整数读入了所以cin并没有fail?
然后尝试了:
int temp;
while (true)
{
cin >> temp;
if (temp == '\n') break;
a[n++] = temp;
}
样例可以过,但是依然不能AC(OJ上的一道题),我想大概是可能有跟 \n
ASCII值相同的整数。
当然,可以用字符串先整行读入再解析,但是难道 C++ 中没有更好更简洁的方法吗?因为问题本身并不难。
自己处理空格还是蛮麻烦的。一般用sstream就好,真要想自己做,也是可以。
再延伸一步,可以自己写一个manipulator。
怎么用呢?和标准的manipulator一样用!
cin >> xyz返回false的唯一原因是failbit或者badbit被设置了。所以你自己写可以自己根据\n设置failbit。