2017-04-24 227 views
0

首先我不是C++專家,我仍然在學習,所以任何見解都將不勝感激。這個問題起初似乎是一個簡單的問題,但幾個月後,我仍然無法找到一個可行的解決方案。我期望它有一個簡單的答案,我只是俯視。C++從文件中讀取文本並將字符串解析爲int數組

下面是我在閱讀類似的線程在這裏和其他網站上寫的一些代碼。基本上我試圖從包含GF256乘法數組的文本文件中讀取(每256行256行)。逐行閱讀似乎只是很好地證明了這一行(我知道我需要的是每行所需的字符串。這是我的問題。我似乎無法找到一種方法來解析這個字符串到一個int數組。我有很多這樣的代碼迭代,嘗試了不同的嘗試,但都沒有爲我工作。我認爲這是一個非常簡單的解決方案。再次,任何有關這個問題的見解將不勝感激。

int kGF = 0; 
int multiGFtemp[256 * 256]; 

int n; 

int main() 
{ 
    string multi_; 

    ifstream fileGF("GF256MultiTable.txt"); 

    if(fileGF.is_open()) 
    { 
     while(getline(fileGF,multi_)) 
     { 


      cout << multi_ << endl; 
      cin.get(); 
     } 
     fileGF.close(); 
    } 
    else 
    { 
     cout << "File is not open" << endl; 
    } 

    cin.get(); 
    cout << multi_; 

    stringstream stream2(multi_); 

    while(stream2) 
    { 
     stream2 >> n; 

     cout << n << endl; 

     multiGFtemp[kGF] = n; 
     kGF++; 
    } 

    for(int k = 0; k < 256 * 256; k++) 
    { 
     /* 
     cout << multiGFtemp[k] << " "; 
     */ 
    } 

    cin.get(); 
    return 0; 
} 
+0

在你提供的代碼中,有唯一一個可能被處理的行是最後一個,當你用'getline'讀取文本時,你應該處理它。考慮編寫一個函數,它將一行(字符串)和一個數組作爲參數,並用第一個的內容填充後者,從文本行讀取數字的問題可以通過使用「CSV C++」搜索並查看其他人已經做到了。 – riodoro1

+0

您可以顯示文件如何格式化的示例嗎? – NathanOliver

+0

這是一個格式爲.txt的文件,其中;是一條新線。 0 0 0 0 ...; 1 1 1 1 1 ...; 1 2 3 5 ...;等等。每個數字之間有一個未定義的空白空間,但每個256個編號行末尾都有一個明確的新行。 – pfe

回答

0

您的程序將分析multi_的內容,該內容在該位置是該文件的最後一行。
你可以將它移動到循環中,但這隻會使事情變得複雜 - 如果你只想要一個普通數組中的256 * 256數字,你可以忽略文件結構。

這是啜該文件到一個數組的一種方式:

int multiGFtemp[256 * 256]; 

int main() 
{ 
    ifstream fileGF("GF256MultiTable.txt"); 
    int kGF = 0; 
    while (kGF < 256 * 256 && fileGF >> multiGFtemp[kGF]) 
    { 
     kGF++; 
    } 

    for(int k = 0; k < kGF; k++) 
    { 
     cout << multiGFtemp[k] << " "; 
    } 
} 
+0

這正是我所期待的。非常簡單。我嘗試將解析轉移到循環中,並能夠以這種方式工作,但您在此處提供的解決方案要簡單得多。謝謝! – pfe

0

我假設你想在一個已知的格式來讀取一個字符串轉換參數。 例如,您有包含一行的文件:「X = 1035,Y = 6658」。 如果是這種情況,我寧願使用sscanf。

例如:

string format("X = %d, Y = %d"); 
string str("X = 1035, Y = 6658"); 
int x, y; 
sscanf(str.c_str(), format, &x, &y); 
+0

對於將該行解析爲數組的主要問題,您錯過了答案。 – Dusteh

相關問題