2016-10-27 44 views
-1

我有一個.dat文件看起來像這樣如何創建和值從文件

x -3 
r 6 
t -2 
a 4 
w 65 
u 83 
l 1 
m 8888 

從這個文件我試圖創建並賦值給變量添加到變量使用infile。例如,int x = -3。我可以在所有的值讀,但我的問題是如何做我想做的,我在閱讀後他們。

infile.open("test.dat"); 

while (infile.peek() != EOF) { 
    //infile >> check; //gets string from file 
    //cout << check; 
    getline(infile,check); 
    //cout << check << endl; 
    } 

在這裏,我會用一個堆棧,然後再彈出他們?

+1

你能告訴你嘗試過這麼遠嗎? – teivaz

+1

std :: map 怎麼樣? – UKMonkey

+1

你的問題的一種可能的解釋是你可以閱讀文件,但不知道如何保持表單中的數據可以通過變量名訪問。你能否在你閱讀你的文件後,更加清楚地將你的問題擴展到你期望的內容。我的猜測是你可能想將它們存儲在'std :: map '中,當你在 – infixed

回答

0

你試過類似下面的東西嗎?

int value, x; 
char variable; 

infile.open("test.dat"); 

while (infile.peek() != EOF) { 
    infile >> variable; // get variable 
    infile >> value; // get value 

    switch(variable){ 
     case 'x': 
      x = value; 
      break; 
     default: 
      cout << "Unknown variable." << endl; 
      break; 
    } 
} 

編輯:基於UKMonkey和Infixed建議,你也可以只存儲在地圖中的值。

map<char, int> variables; 

while (infile.peek() != EOF) { 
    infile >> variable; // get variable 
    infile >> value; // get value 

    variables[variable] = value; 
} 

您可以從地圖輸出值。

for(auto itr : variables){ 
    cout << itr.first << " : " << itr.second << endl; 
} 

或類似

cout << variables['x'] << endl; 
+0

這個人是一個天才。這麼簡單,但使sooo很有意義。 – moe