如何将包含整数向量的结构作为成员,我尝试了以下代码但是无法读取文件
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));
}
}
我确实搜索过类似的问题,但我找不到。
答案 0 :(得分:1)
这里的直接问题是终止while
循环的相同条件会阻止连续读取工作。流处于错误状态。因此,您的double
值永远不会被读取。
实际上,第一个double
的整数部分被读作整数,在流中留下小数部分。你无法从中恢复过来。
解决此问题的一种方法可能是将您的值读入字符串,使用stoi
将它们转换为整数并将它们放入向量中。但在进行整数转换之前,请检查字符串中的小数点。如果它包含一个,则跳出循环。使用stod
转换双值。