[英]c++ How to istream struct contains vector
如何将包含整数向量的成员作为istream结构,我尝试了以下代码,但无法读取文件
struct Ss{
std::vector<int> a;
double b;
double c; };
std::istream& operator>>(std::istream &is, Ss &d)
{
int x;
while (is >> x)
d.a.push_back(x);
is >> d.b;
is >> d.c;
return is;
}
std::vector <std::vector<Ss >> Aarr;
void scanData()
{
ifstream in;
in.open(FileInp);
std::string line;
while (std::getline(in, line))
{
std::stringstream V(line);
Ss S1;
std::vector<Ss > inner;
while (V >> S1)
inner.push_back(std::move(S1));
Aarr.push_back(std::move(inner));
}
}
我确实在寻找类似的问题,但找不到。
这里的直接问题是,终止while
循环的相同条件会阻止后续读取工作。 流处于错误状态。 因此,永远不会读取您的double
值。
实际上,第一个double
的整数部分被读取为整数,而小数部分留在流中。 您无法从中恢复。
解决此问题的一种方法可能是将值读取为字符串,使用stoi
将其转换为整数并将其放入向量中。 但是在进行整数转换之前,请检查字符串中的小数点。 如果包含一个,则跳出循环。 使用stod
转换双stod
值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.