我的代码不断返回0作为文本文件中的小数位数

时间:2019-07-02 13:23:25

标签: c++

我制作了一个文本文件,该文件填充有用空格分隔的小数,我想计算有多少。问题是当我来检查是否做得正确时,程序说文件中的元素数为0。

ifstream dataInput("Data Set.txt");
double readNumber;
vector<int> dataSet;
while (dataInput >> readNumber){
        dataSet.push_back(readNumber);
}
cout << "the Number of elements in this file is " << dataSet.size() << endl;

txt文件:

3.2 1.9 2.7 2.4 2.8 2.9 3.8 3.0 2.5 3.3 1.8 2.5 3.7 2.8 2.0 3.2 2.3 2.1 2.5 1.9

我的预期结果是

The number of elements in this file is N.

但是我得到了:

The number of elements in this file is 0.

编辑:由于这里的人们,我发现我的文件无法正确打开。我添加了行

if (!dataInput.is_open()) {
    cerr << "The file can not be opened\n";
    exit(1);//exits the program
}

检查文件是否正确打开。

2 个答案:

答案 0 :(得分:0)

作为建议,您应该熟悉STL,但要注意它需要花一些时间来练习。最后,您将能够编写非常简洁的代码。

#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>

int main() {
    std::ifstream dataInput("./data/TestFile.txt");
    if (!dataInput.good()) return EXIT_FAILURE;
    std::vector<double> dataSet;
    std::copy(std::istream_iterator<double>(dataInput), std::istream_iterator<double>(), std::back_inserter(dataSet));
    std::cout << "The number of elements in this file is: " << dataSet.size() << "\n";
    return EXIT_SUCCESS;
}

您也不应编写using namespace std来编写更少的代码。这被认为是不好的做法。

答案 1 :(得分:-3)

尝试正确读取文件“ ifstream dataInput(” DataSet.txt“);”您应该调试代码以了解是否通过此条件

<< while(dataInput >> readNumber)>>