我制作了一个文本文件,该文件填充有用空格分隔的小数,我想计算有多少。问题是当我来检查是否做得正确时,程序说文件中的元素数为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
}
检查文件是否正确打开。
答案 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)>>