在c ++中放弃/忽略行的其余部分

时间:2017-11-01 18:18:51

标签: c++

我正在寻找一种只读取文本文件中特定数据集的方法。后来我需要"饲料"包含它内容的类,并将对象存储在向量中。

我的问题是,我不需要线条的全部内容,并且想要丢弃或忽略接下来的内容并跳转到文本的下一行。

如果您有解决方案或提示,我将非常高兴:)

文件中的每一行结构如下:

  

品牌modelName yearOfProduction价格moreStuffIDontCareAbout

这是我到目前为止所提出的。

while (inputFile >> brand >> modell >> yearofproduction >> prize) {     
    vecBikes.push_back(Bike(brand, modell, yearofproduction, prize));
    getline(inputFile, puffer);
}

2 个答案:

答案 0 :(得分:-1)

可以通过在部分之前放置delimiter charcter来解决这个问题。 然后为getline()函数设置自定义分隔符 代码:

while (getline (inputFile,puffer,(delimiter))
{ 
 }

答案 1 :(得分:-1)

我们假设您有一个Bike类定义。

struct Bike {
    std::string brand, model;
    int year, price;
};

然后我建议你为类Bike定义一个输入操作符。

std::istream& operator>>(std::istream& in, Bike& b) {
    if (std::string line; std::getline(in, line)) {
        std::istringstream line_stream{line};
        line_stream >> b.brand >> b.model >> b.year >> b.price;
    }
    return in;
}

(注意使用C ++ 17 if-with-initializers语法)。

现在只需构建一个std::istream_iterator对来填充任何输入流中的向量(假设这里称为流input)。

std::vector<Bike> vecBikes{std::istream_iterator<Bike>{input},
                        std::istream_iterator<Bike>{}};

Live example