cin忽略了eof角色? !并返回忽略的eof字符的-0值

时间:2011-06-19 08:26:42

标签: c++ character ignore eof cin

Helow :) 这是我的递归程序,它反转了在eof之前输入的数字。 但是当找到eof字符 ^ Z 时它不会停止:(直到我按下输入并在新行中写eof字符..

示例图片:http://www.imageupload.org/?d=F9D743081

#include <iostream>
using namespace std;
void recursive()
{
    long double n;
    if((cin>>n))
        recursive();

    cout<<n<<endl;
}
int main()
{
    recursive();
    return 0;
}

有什么问题? 谢谢......

1 个答案:

答案 0 :(得分:3)

您应该将代码编写为:

void recursive()
{
    long double n;
    if(cin>>n) // extra parens aren't necessary.
    {
       recursive();
       cout<<n<<endl;
   }
}

现在只打印成功读取的值。您的程序也会打印不成功的读取;最后一次阅读不成功,但您的cout仍尝试打印n

顺便说一下,您不需要按^Z来停止递归。您可以按一些字母或其他一些非数字字符来停止递归。

演示:http://www.ideone.com/D4XT1