while(cin)循环DOUBLE显示

时间:2013-05-14 20:00:03

标签: c++ visual-c++

这是我写的代码。你看到有简单的模板PRINT功能.. 它真的适用于INT类型向量,但是DOUBLE却没有 有什么问题?

 #include <iostream>
 #include <vector>
 using namespace std;

 template <typename T>
 void print (vector<T> &v) {
     for (int i=0; i<v.size(); i++)
         cout<<v[i]<<'\t'; 
 }

 int main() {
    vector<int> vec;
    int a;
    while (cin>>a)
       vec.push_back(a);
    print(vec);
    vector<double> vec1;
    double b;
    while (cin>>b)
       vec1.push_back(b);
   print(vec1);
   return 0;
   system("pause");
}

我已经使用定义的while循环测试了它...就像while(some_integer&lt; 10)并且它可以工作,但是如果没有定义的值应该运行多少次它就无法工作 你可以帮我解决一下吗?无法弄清楚

1 个答案:

答案 0 :(得分:4)

你的循环有效如下:

// Continue reading things while cin is in a good state and the read succeeds (int datatype)
while (cin >> a) // ...

要退出该循环,您会读取非整数的内容(例如字母或。),并且cin将进入失败状态。

当它处于失败状态时,之后的所有读取都将无声地失败。

在您尝试阅读之前的任何内容之前,您需要cin.clear()清除失败状态!