0

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

4

1 回答 1

4

您的循环有效如下:

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

要退出该循环,您需要读取非整数内容(例如字母或 .),然后 cin 将进入失败状态。

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

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

于 2013-05-14T20:05:49.467 回答