试图从文件中的行中获取数据

Attempting to get data from lines in a file

本文关键字:获取 数据 文件      更新时间:2023-10-16

我对c++很陌生,所以很抱歉,如果这是一个愚蠢的问题!

对于一个项目,我们给出一个包含几千行值的文件,每行有9个不同的数字。

我想创建一个for/while循环,对于每个循环,将一行的第8和第9个整数存储为变量,以便我可以对它们进行一些计算。然后循环将移动到下一行,将该行的第8和第9个数字存储为相同的变量,这样我就可以对它进行相同的计算,当我用完行时结束。

我的问题与读取文件无关,我只是感到困惑,我如何告诉它只从每行取第8和第9个值。

谢谢你的帮助,非常感谢!

为可读性而不是速度而设计。它也不检查输入文件的格式是否正确。

template<class T> ConvertFromString(const std::string& s)
{
    std::istringstream ss(s);
    T x;
    ss >> x;
    return x;
}

std::vector<int> values8;
std::vector<int> values9;
std::ifstream file("myfile.txt");
std::string line;
while (std::getline(file, line))
{
    std::istringstream ss(line);
    for (int i = 0; i < 9; i++)
    {
        std::string token;
        ss >> token;
        switch (i)
        {
            case 8:
            {
                values8.push_back(ConvertFromString<int>(token));
            }
            break;
            case 9:
            {
                values9.push_back(ConvertFromString<int>(token));
            }
            break;
        }
    }
}

首先,分割字符串,然后使用atoi将它们转换为数字。然后,您将从带有数字的数组或向量中获取第8和第9个值。

//Split string
std::vector<std::string> &split(const std::string &s, char delim,   std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}

std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}
//new code goes here
std::string line;
std::vector<std::string> lineSplit = split(line, ' ');
std::vector<int> numbers;
for (int i = 0; i < lineSplit.size(); i++)
    numbers.push_back(atoi(lineSplit[i]);//or stoi
int numb1 = numbers[7];//8th
int numb2 = numbers[8];//9th