2013-10-13 2 views
2

Здравствуйте, у меня возникли проблемы с чтением списка поплавков, разделенных пробелами в TXT-файле. Я хочу хранить числа, считанные из файла в векторе, а затем выводить из них некоторую информацию (сумма, медиана, режим и т. Д.), Но я даже не могу получить значения, хранящиеся в векторе. Сегмент кода ниже:Чтение поплавков из .txt-файла в C++

#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.», Которая, очевидно, не то, что я хочу. Я бы очень признателен за любую помощь. Я очень новичок в программировании, поэтому приношу свои извинения, особенно ли этот код.

+0

Вы уверены, что используете нужный файл? Показать некоторые тексты из файла. – P0W

+0

Я бы не стал слишком беспокоиться, этот код лучше, чем много нового кода, который мы видим. – john

ответ

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; 
} 

Это действительно выглядит, как вы не в состоянии открыть файл, и именно поэтому вы не читать никаких поплавки.

Этот код будет проверять эту теорию. Когда вы открываете файл всегда убедитесь, что открытое успешно завершено.

+0

Спасибо! Вы были правы, моя программа не открылась. Прислушайтесь к советам по проверке файла в будущем. – rooms

1

Один сложный вопрос о чтении и записи чисел с плавающей запятой из/в текстовые файлы заключается в том, что стандартная библиотека учитывает локаль. Это означает, что если локаль определяет десятичную метку как запятую, то она не сможет анализировать числа с десятичными знаками периода. Вы должны проверить настройки своего языка и номера в текстовом файле, десятичные знаки должны быть одинаковыми.

Смежные вопросы