2

您好,我无法读取 .txt 文件中由空格分隔的浮点数列表。我想将从文件中读取的数字存储在向量中,然后从中获取一些信息(总和、中位数、模式等),但我什至无法获取存储在向量中的值。代码段如下:

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

int main(){

std::ifstream myFile;            //creates stream myFile
 myFile.open("simpledata.txt");  //opens .txt file

std::vector<double>numberlist;  //vector to store the numerical values in
double number = 0 ;      
while(myFile >> number){    //
    numberlist.push_back(number);

for (int i = 0; i < numberlist.size(); i++){
    std::cout << numberlist[i] << std::endl ;
}



double sum = 0;

for (int i = 0; i< numberlist.size(); i++){   //calculates sum
    sum += numberlist[i];}
std::cout << "Average number: " << sum/numberlist.size() << std::endl;  //prints average
}

当我运行这个程序时,平均值输出为“-1.#IND”,这显然不是我想要的。我真的很感激任何帮助。我对编程很陌生,所以如果这段代码特别糟糕,我很抱歉。

4

2 回答 2

2

添加此代码

std::ifstream myFile;            //creates stream myFile
myFile.open("simpledata.txt");  //opens .txt file

if (!myFile.is_open())  // check file is open, quit if not
{
    std::cerr << "failed to open file\n";
    return 1;
}

看起来您确实无法打开文件,这就是您无法读取任何浮点数的原因。

此代码将测试该理论。当您打开文件时,请始终检查打开是否成功。

于 2013-10-13T18:22:09.323 回答
1

关于从/向文本文件读取和写入浮点数的一个棘手点是标准库考虑了语言环境。这意味着如果语言环境将小数点定义为逗号,那么它将无法解析带有句点小数点的数字。您应该检查操作系统的区域设置和文本文件中的数字,小数点应该相同。

于 2013-10-13T18:37:07.743 回答