2014-09-02 43 views
0

在我的程序中,我有函數Get_auto(); 我希望它做這樣的事情:多次使用從文件讀取的函數

void Cook::Get_auto(){ 
ifstream ifile; 
ifile.open("sourcek.txt"); 
char choice; 
ifile >> choice; 
switch (choice) 
{ 
case '0': lvl = 0; 
    break; 
case '1': lvl = 1; 
    break; 
case '2': lvl = 2; 
    break; 
case '3': lvl = 3; 
    break; 
case '4': lvl = 4; 
    break; 
} 
} 

的問題是,我想使用的功能Get_auto多次,每次加載以下文件的最後使用的部分數據。 我該怎麼做?

+0

考慮將char的static_cast用於int。你可能會發現你有超過9個lvls,在這種情況下使用字符串並考慮一個叫做atoi的函數 – 2014-09-02 09:20:10

回答

0

將ifstream作爲其專用字段移動到類中。然後,創建一個方法Cook::open,在此處打開ifstream。在Cook::Get_auto中只能使用>>運算符。在您首次撥打Get_auto方法之前,請致電open方法。

像這樣:(假設它是一個C++代碼,這將是在頭文件)

private: 
    ifstream ifile; 

public: 
    void open(); 
    void Get_auto(); 

,這將是在源文件中:

void Cook::open() { 
    ifile.open("sourcek.txt"); 
} 

void Cook::Get_auto(){ 
    char choice; 
    ifile >> choice; 
    switch (choice) 
    { 
    case '0': lvl = 0; 
     break; 
    case '1': lvl = 1; 
     break; 
    case '2': lvl = 2; 
     break; 
    case '3': lvl = 3; 
     break; 
    case '4': lvl = 4; 
     break; 
    } 
} 

這將是明智還要添加一些檢查是否打開ifile以及是否可以讀取它。