C++:如何读取分离变量,然后读取向量
C++ : how to read to separate variables and then to vector?
拥有这个:
#include <iostream>
#include <vector>
#include <istream>
using namespace std;
void read_vector(istream &in, vector<double> &vec)
{
if (in) //check wheter !in.fail() => but how can "cin" have error status??
{
vec.clear(); //also, clear the vector (general function)
double tmp;
while (in >> tmp)
{
vec.push_back(tmp);
}
in.clear(); //should be there any error?
}
}
int main()
{
double a, b;
vector<double> vec;
while (cin >> a >> b)
;
read_vector(cin, vec);
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << ' ';
}
cout << endl;
return 0;
}
我编译并尝试给出测试值:
$./a.out
$1.2 3.4 5.6 7.8
$
无输出。1.2
应保存到变量a
,3.4
应保存到可变b
,其余存储到向量(通过函数read_vector
(。我认为由于它是在while()
中,所以istream的布尔条件仍然成立。
使istream为false的条件是什么(我知道错误的值、EOF或其他信号(。
请举例说明
good()
、fail()
、bad()
、operator bool
和operator!
->根据https://en.cppreference.com/w/cpp/io/basic_ios/operator_bool但是不可能有";错误的";值(或其他类型的
double
(-cin
将如何识别停止输入操作数(a
、b
(,使cin
出错,然后继续执行下一个函数read_vector
(因此它最终将填充矢量,我可以从for循环中看到结果(
while (cin >> a >> b)
;
这读取到CCD_ 18和CCD_。
然后它再次读入CCD_ 20和CCD_。
…并且它继续这样做,直到流中的数据用完为止。
那是因为你把它放在一个循环中。
不出所料,在循环结束后(通过cin
设置其错误位(,您无法提取更多数据。清除错误位是可能的,但您仍然没有更多的数据可读取。
我不认为你是想在这里兜圈子;只需写入:
cin >> a >> b;
相关文章:
- 从字符串变量中逐字符读取单词
- C++:如何读取分离变量,然后读取向量
- 全局变量 多读取器 一个写入器多线程安全?
- 在指向函数中读取变量时出现分割错误
- 从Objective-C中的C 标头读取变量
- qml从c++读取变量
- 从字符串中读取变量数据
- 如何从另一个类读取变量
- 如何使用 std::getline 来匹配预期的输入并读取变量部分
- 如何从标准向量前端读取并删除读取变量
- 如何从一个对象的传递指针中读取变量
- 正在从C++中的.mat文件中读取变量
- 初始化数组,放置新,读取变量,定义的行为
- 读取变量时发生简单代码错误:无法访问地址处的内存
- GDB:<错误读取变量>,带有 C++ 向量
- 从文件中读取变量时出现问题
- QMutex需要读取变量
- 在多线程环境中读取变量是否总是有效的?
- 正在从配置文件中读取变量
- 与'fgets'同时读取变量