a96313 发表于 2015-4-30 00:30:05

为什么在std::cin>>value里等待输入按回车还是走不出缓冲区

#include<iostream>


int main()
{
        int sum = 0;
        int value;
        while (std::cin>>value)
                sum += value;
        std::cout<<"sum is:"<<sum;//<<std::endl;
       
        return 0;
}

shorey 发表于 2015-4-30 11:17:47

cin>>value操作返回的是流对象“>>”,不会像scanf()返回读取数据的个数的。
所以输入回车之后返回的还是“>>”,自然还会继续循环的
要结束循环在win系统下按CTRL+C, Linux下按CTRL+D

a96313 发表于 2015-4-30 16:16:55

可是把std::cin>>value改成scanf("%d",&value)也是一样的啊

a96313 发表于 2015-4-30 16:19:01

如果我将程序改成这样它就能成功的读入:
    #include<iostream>

   int main(void)
{

}

a96313 发表于 2015-4-30 16:20:04

如果我将程序改成这样它就能成功的读入:
   #include<iostream>

   int main(void)
{
         int sum = 0;
         int value;
         while (std::cin>>value)
          {
               sum += value;
               std::cout<<"sum is:"<<sum;//<<std::endl;
         }
      return 0;
}
页: [1]
查看完整版本: 为什么在std::cin>>value里等待输入按回车还是走不出缓冲区