繁体   English   中英

时间:2019-05-10标签:c ++如何istream结构包含向量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM