2013-05-09 53 views
0

我在製作一個程序,並且有一個需要讀取的.txt文件,並從中獲取命令。文本文檔看起來像:從C++的多行txt文檔中讀取一個數字

U 
R 
F 10 
D 
F 13 
Q 

我需要從中得到數字。即時讀取文件的方式來自名爲instreamifstream對象。目前我使用

while(instream.get(charVariable)){ 
    switch(charVariable){ 
    case 'F': //do the forward command 
     break; 
    ... 
    } 
} 

正向命令需要採取線,這樣做,它需要讀取F,跳過空間,並獲得整數爲int變量。我對C++相當陌生,所以我需要幫助這樣做....如何將數字讀入單個char變量,並將其轉換爲整型變量?任何幫助將是偉大的!謝謝

回答

1

streams移動,因爲你讀他們。這意味着當您從流中讀取F時,下一個輸入是integer。而且,由於他們在格式化輸入工作,當您使用>>

while(instream >> charVariable)){ 
    switch(charVariable){ 
    case 'F': //do the forward command 
     int nr; 
     instream >> nr; 
     // do something with number. 
     break; 
    ... 
    } 
} 
+0

那麼,iss,nr和數字是什麼? – PulsePanda 2013-05-09 20:22:39

+0

@wbAnon'iss'只是一個錯字,'nr'是一個'int','numbers'是一個整數的「向量」,但我認爲你不需要收集這些數字,或者你呢? – stardust 2013-05-09 20:24:58

+0

我這樣做,數字是向前移動的數量 – PulsePanda 2013-05-09 20:25:59

0

基本上沒有文件流和I/O流之間沒有巨大的差異流會跳過空白。你可以做到以下幾點:

while(!instream.eof()) 
{ 
    char command; 
    instream >> command; 
    switch(command) 
    { 
     case 'F': 
      int F_value; 
      instream >> F_value; 
      forward(F_value); 
      break; 

     //... 
    } 
} 
0

由於使用可大於一個字符的數字(即「10」代表2個字符),這將是最好只使用一個普通整數變量。

int n; 
... 
instream >> n; //if your switch statement is working this goes inside the 'F' case 

然後你可以用n來做你想要的(在你將下一個整數讀入n之前)。