从特定行开始将文件读取为成对向量

时间:2019-01-05 19:22:26

标签: c++ vector ifstream getline

这是我拥有的txt文件摘要,其中列出了温度,电压和灵敏度

Temp.      Voltage    Sensitivity
(Kelvin)   (Volts)    (milliVolts/Kelvin)

1.4     1.644290        -12.5
1.5     1.642990        -13.6
1.6     1.641570        -14.8
1.7     1.640030        -16.0
1.8     1.638370        -17.1

我要完成的工作是将“温度”和“电压”的值读入成对的向量中,这样,如果查看“温度”,我可以找到相应的电压。制作两个单独的向量并根据其位置查找相应的值会更容易/更有效吗?

void Convert::readFile()
{
    ifstream inFile;
    vector<double> temp,voltage;
    double kelvin,mV;

    inFile.open("DT-670.txt");
    if (inFile) {
        cout << "File Open";

        while(inFile>>kelvin && inFile>> mV)
        {
            temp.push_back(kelvin);
            voltage.push_back(mV);
        }

        cout<<temp.size();

    }

2 个答案:

答案 0 :(得分:0)

这是示例代码,您可以更改行号并包括条件执行

 db.proyectos.find({
    _id:ObjectId("5bfa09f0a0441f38d45dcc9c"),
    "reuniones._id":ObjectId("5bfa09f0a0441f38d45dcc99"), 
    "reuniones.participantes.nomina":2 
 })

答案 1 :(得分:0)

如果您不打算使用敏感度数据,则可以执行以下操作:

std::map<double, double> table;
//...
double temperature = 0.0;
double voltage = 0.0;
double sensitivity = 0.0;
while (file >> temperature >> voltage >> sensitivity)
{
  table[temp] = voltage;
}

这里存在一个基本问题,即使用浮点值作为搜索关键字。浮点值无法通过内部表示精确表示;因此operator==可能不适用于所有值。

要解决平等问题,大多数程序都使用等价或 epsilon 来确定平等。例如,如果两个浮点值之间的差小于1E-6,则认为它们相等。我建议探索std::map,以了解如何重载比较运算符(或提供用于比较值的函数)。