2013-10-13 53 views
2

您好,我無法讀取由.txt文件中的空格分隔的浮動列表。我想將從文件中讀取的數字存儲在一個向量中,然後從它們中導出一些信息(總和,中位數,模式等),但我甚至無法獲取存儲在向量中的值。代碼段如下:從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」這顯然不是我想要的輸出。我非常感謝任何幫助。我對編程非常陌生,所以如果這段代碼特別糟糕,我很抱歉。

+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

關於從文本文件讀取/寫入浮點數字的一個棘手問題是標準庫考慮了語言環境。這意味着如果區域設置將小數點標記定義爲逗號,那麼它將無法解析帶有句點小數點的數字。 您應該檢查您的操作系統的區域設置和文本文件中的數字,小數點應該是相同的。