2016-02-28 74 views
-2

我想讀從每行有3個雙打的文本文件3個雙打文本文件(行數是不知道事先)。然後將這些雙打保存到3個不同的陣列中,以便稍後使用雙打。或者一次讀取程序1號線,將其保存就行了,用3個雙打,我需要再轉到下一行使用下一個3個雙打。保存雙打,以供以後使用C++

哪一種方法是使用/保存這些雙打更好?

如果數組是一個更好的方式來保存它們,我該如何創建一個數組來計算文件的行數以知道它應該有多少元素,並在讀取文件時將值保存在正確的數組中?

我的文件讀取的代碼如下所示到目前爲止

ifstream theFile("pose.txt"); 
double first,second,third; 
while(theFile >> first >> second >> third){ 
    cout<<first<<" " << second <<" "<< third<<endl; 
    /*some code here to save values in different arrays for 
    use later or use the 3 values straight away while keeping the line 
    number and then moving on to the next line to use those values 
    straight away*/ 
} 

代碼或建議,我對這個問題的邏輯歡迎任何幫助,

感謝。

編輯:首先我不知道如果我的值保存到一個數組的邏輯是正確的設計智慧,其次我不知道怎麼這三個值在循環中添加到不同的數組。

+2

了什麼問題嗎...? –

+0

檢查編輯我已使問題更清楚。 –

+1

你沒有一個數組,你的問題仍然不清楚。查看幫助中心,瞭解您應該在此處詢問哪些問題。 –

回答

0

結構的一些矢量可能有幫助:

struct Values { 
    double first; 
    double second; 
    double third; 
}; 

std::vector<Values> v; 

while(theFile >> first >> second >> third){ 
    cout<<first<<" " << second <<" "<< third<<endl; 
    Values values; 
    values.first = first; 
    values.second = second; 
    values.third = third; 
    v.push_back(values); 
} 

完成相關的行號,你也可以使用地圖

std::map<int,Values> m; 
int lineno = 1; 
while(theFile >> first >> second >> third){ 
    cout<<first<<" " << second <<" "<< third<<endl; 
    Values values; 
    values.first = first; 
    values.second = second; 
    values.third = third; 
    v[lineno++] = values; 
} 
+0

如果我使用結構方式,那麼我將如何調用第一行的值以供使用,然後第二等? –

+0

你可以簡單地用'V [1] .first','V [2] .first'等 –

+0

Euxaristw破虜! –

0

使用stringstreams(#include <sstream>)應該是有幫助的。

// Example program 
#include <iostream> 
#include <string> 
#include <sstream> 
using namespace std; 
int main() 
{ 
    string line; 
    while(getline(cin,line)) 
    { 
     stringstream str(line); //declare a stringstream which is initialized to line 
     double a,b,c; 
     str >> a >> b >> c ; 
     cout << "A is "<< a << " B is "<< b << " C is " << c <<endl; 
    } 
} 
相關問題