while(cin)循环双显示

while(cin) cycle DOUBLE displaying

本文关键字:循环 双显示 cin while      更新时间:2023-10-16

这是我写的代码。如您所见,有一个简单的模板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<10)一样,它可以工作,但是如果没有定义它应该运行多少次的值,它就无法工作你能帮我解决这个问题吗?

循环的有效方式如下:

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

要退出该循环,读取非整数(如字母或a .), cin将进入失败状态。

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

您将希望cin.clear()在尝试读取失败状态之后的任何内容之前清除失败状态!