2017-04-01 38 views
0

我有一個關於電廠監控的項目,它需要我從兩個文件(Excel文件或文本文件)中讀取數據。數據由97列和515行組成,整數和字符串混合在一起。因此,我的想法是聲明97個數組,將每列中的值存儲到各自的數組中。但是,某些列包含具有多個詞的字符串。因此,一行可能在一列中有一個字,而另一行可能有三個等。這是一個問題,因爲當我讀取行時,每個字符串都分配給不同的字符串數組,當我希望程序讀取整個短語時作爲一個字符串並將該字符串存儲在爲該列初始化的數組中。這導致數據轉移和一些數據沒有分配給正確的數組等。從excel /文本文件中讀取而不跳過空格,除非通過製表符

我有一個C++的基本知識,沒有什麼引人注目的,但如果我沒有錯誤istreams停止閱讀,當它遇到一個空間,並不區分標籤空間或標準空格鍵空間之間。任何人都可以幫助我解決這個問題,以便我可以正確存儲數據並開發我的KPI?

我已經包含了我的數據的一部分,也試圖嘗試讀取代碼的4列。請注意,每列都由文本文件版本的數據中的選項卡分隔。

ID Com NID Plant     Operator 
3 N  Rock      Alabama Elec Co 
3 N  Rock      Alabama Elec Co 
4 N  Walt Boulder Co   Alabama Elec Co 
10 N 3 Greene County   Alabama Elec Co  
46 N 1 Browns Ferry    Tennessee Valley Authority 

ID的COM NID廠操作員 3 N巖阿拉巴馬ELEC鈷 3 N巖阿拉巴馬ELEC鈷 4 N沃爾特博爾德鈷阿拉巴馬ELEC鈷 10 N 3 Greene縣阿拉巴馬ELEC鈷
46 N 1布朗斯渡輪田納西流域管理局

說明我遇到的問題,如果我有4個字符串數組的4列,在第一行,3將分配給array1,N到array2,搖滾到array3和電子到array4。但是,在第3行中,4將分配給array1,N將分配給array2,Walt分配給數組3,但Boulder將分配給數組4,而不是存儲整個工廠名稱。 在第5行發生類似的命運,它弄亂了數據的組織並且不允許我正確和準確地操作它。

//numLines is taken from previous code to determine the 
//number of lines in the file 
std::string *ID = new std::string[numLines]; 
std::string *YN = new std::string[numLines]; 
std::string *nuclearID = new std::string[numLines]; 
std::string *plantName = new std::string[numLines]; 

std::ifstream infile; 
infile.open("nocommagenerationdata.dat"); 
if (infile.is_open()) { 
    int i = 0; 
    while (i<numLines) { 
     infile >> ID[i] >> YN[i] >> nuclearID[i] >> plantName[i]; 
     std::cout << ID[i] << YN[i] << nuclearID[i] << plantName[i] << std::endl; 

     i++; 
    } 

} 
infile.close(); 

我也開始嘗試初始化字符串用一個計數器來查看是否在一排線與其他但是數據也清楚地表明,數據轉移,因爲該活在讀一字符串與空間問題。

std::ifstream infile; 
infile.open("nocommagenerationdata.dat"); 
if (infile.is_open()) { 
    int i = 0; std::string temp; 
    while (i<numLines) { 
     infile >> temp; 
     std::cout << i << "." << temp << std::endl; 

     i++; 
    } 

} 
infile.close(); 

我將不勝感激的任何援助

回答

0

只是一些提示。

定義一個結構或類,它表示您正在從文件讀取的記錄。您將只需要一個數組來保存記錄,因爲它們是從文件中的每一行構建的。

調查如何使用std :: getline讀取文件中的每一行,並使用std :: strtok來解析每條記錄數據。

這將適用於製表符分隔的文本文件。如果您的Excel文件不是製表符分隔的,那麼您需要將副本另存爲製表符分隔。

相關問題