有没有一种方法可以让程序“记住”用c ++读取过的文本文件的哪一行?

问题描述 投票:0回答:1

我需要将Sensordata写入.txt文件。我还需要其他代码使用的数据。我当时想的是在文件中写入sensordata并将其从那里分发到其他代码(逐行分发,但可能不如数据输入那么快)。我创建了一个“ SensorData”类,并在其中创建了以下方法:

SensorData::SensorData(std::string DataName) {
    this->ioFileStream.open(DataName, std::ios::binary | std::ios::app);
    if (ioFileStream.is_open()) std::cout << "File is build and connected.\n";
    else std::cout << "Error: Connection Failed!\n";
}

void SensorData::writeBinary(std::string FileInput) {
    if (!this->ioFileStream.good()) std::cout << "Error: Unable to write data.\n";
    else this->ioFileStream << FileInput;
}

std::string SensorData::readBinary(unsigned int LineNumber) {
    if (!this->ioFileStream.good()) std::cout << "Error: Unable to read data.\n";
    else {
        std::string LineContent{ "" };
        unsigned int run{ 0 };
        while (std::getline(this->ioFileStream, LineContent)) {  // read file line by line
            if (LineNumber == run) return LineContent;           // return value if line reached
            run++;
        }
    }
    return LineContent = "";      // if there is no sensordata anymore
}

是否有解决方案来避免readBinary方法中的while循环?例如,如果我有1200行sensordata并想读取1000行,那么我需要跳过999行。我可以通过实现类似指针的方法来避免这种情况吗?

最诚挚的问候

Tobias

我需要将Sensordata写入.txt文件。我还需要其他代码使用的数据。我在想的是将sensordata写入文件中,然后从那里分发到其他代码(...

c++ iostream getline line-numbers read-data
1个回答
0
投票

现在我将我的readBinary方法更改为:

© www.soinside.com 2019 - 2024. All rights reserved.