从C ++中的.txt文件中读取浮点数

时间:2013-10-13 18:18:35

标签: c++

您好我在读取.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”,这显然不是我想要的。我真的很感激任何帮助。我对编程很陌生,所以如果这段代码特别糟糕,我很抱歉。

2 个答案:

答案 0 :(得分: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;
}

看起来你真的没有打开文件,这就是你无法阅读任何花车的原因。

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

答案 1 :(得分:1)

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