C ++-从文件读取到双

Dan*_*boy 4 c++ readfile

我现在对使用C ++进行编程和学习课程相对较新。到目前为止,我还没有遇到任何重大问题。我正在编写一个程序,其中X数量的裁判可以得分0.0-10.0(双),然后除去最高和最低的一个,然后计算平均值并打印出来。

这部分已经完成,现在我想从以下格式的文件中读取:example.txt-10.0 9.5 6.4 3.4 7.5

但是我在点号(。)以及如何解决该问题以使数字成倍增加方面遇到了麻烦。有什么建议和(好的)解释,我可以理解吗?


TL; DR:从文件(EG'9.7')读取一个双精度变量以放入数组。

jrd*_*rd1 5

由于文本文件是用空格分隔的,因此可以利用std::istream默认情况下跳过空格的对象(在本例中为std::fstream)来利用它:

#include <fstream>
#include <vector>
#include <cstdlib>
#include <iostream>

int main() {
    std::ifstream ifile("example.txt", std::ios::in);
    std::vector<double> scores;

    //check to see that the file was opened correctly:
    if (!ifile.is_open()) {
        std::cerr << "There was a problem opening the input file!\n";
        exit(1);//exit or do additional error checking
    }

    double num = 0.0;
    //keep storing values from the text file so long as data exists:
    while (ifile >> num) {
        scores.push_back(num);
    }

    //verify that the scores were stored correctly:
    for (int i = 0; i < scores.size(); ++i) {
        std::cout << scores[i] << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

注意:

vectors出于多种原因,强烈建议在可能的地方使用动态数组代替,如此处所述:

什么时候在C ++中使用向量以及何时使用数组?