2015-11-14 61 views
1

我有這個項目,我正在上課,我不確定我完全理解了這個問題。指令如下:設置獲取指針

當您從流中讀取數據時,每次讀取字符時指針都會加1。這樣你總能得到下一個角色。如果你想兩次讀同一個文件怎麼辦?那麼你需要將'get'點重置爲0.在這個例子中,假設文件numbers.txt存在,並且它裏面有數字1,2,3,4和5,以便在-之間。您注意到,當get指針放回到文件的0位置時,計數會重置爲1。

我的問題是他究竟在問什麼?

此外,我很困惑如何處理int位置。不是要求解決,至少是正確的方向提示。

#include <iostream> 
#include <ostream> 
#include <istream> 
#include <ostream> 
#include <fstream> 
#include <sstream> 
#include <string> 
#include <iomanip> 

bool GetInputFileStream(std::ifstream * fin, std::string filename); 
void SetGetPointer(std::istream & fin, int location); 

int main() 
{ 
std::ifstream fin; 
    std::string filename = "numbers.txt"; 
    bool isOpen = GetInputFileStream(&fin, filename); 
    std::cout << filename << " open: "; 
    std::cout << std::boolalpha << isOpen << std::endl; 
    int number = 0; 
    fin >> number; 
    std::cout << "Read: " << number << std::endl; 
    fin >> number; 
    std::cout << "Read: " << number << std::endl; 
    SetGetPointer(fin, 0); 
    while (fin >> number) 
    { 
     std::cout << "Read: " << number << std::endl; 
    } 
    fin.close(); 

    std::cout << "Press ENTER to continue"; 
    std::cin.get(); 

}//END MAIN 

bool GetInputFileStream(std::ifstream * fin, std::string filename) 
{ 

    std::ifstream Infield(filename); 
    return Infield.good(); 

} 

void SetGetPointer(std::istream & fin, int location) 
{ 

    &fin.seekg(std::ios::beg); 

    //What am I missing with location?? 

} 
+0

代碼調用'seekg()'的單參數版本,其中'std :: ios:beg'表示流的開始。 'location'參數被忽略。使用'location'的正確方法是調用2參數'seekg()'代替:'fin.seekg(location,std :: ios_base :: beg);',這將尋求相對位置0到流的開始(順便說一下,'fin.seekg()'前面的'&'是不必要的)。 –

回答

0

通過你的教授給出的說明是需要SetGetPointer()

要實現從說明什麼:Well you need to reset the 'get' point back to 0. 你可以看到是如何被使用的功能: SetGetPointer(fin, 0);

這樣你就可以假設SetGetPointer()在某個location處設置了fin。在前面的例子中,它將fin設置回到開頭。

0

謝謝你們,它說我有布爾功能錯誤是它的一大部分。它以原始的方式從numbers.txt文件獲取輸入。我應該有我的布爾爲:

布爾GetInputFileStream(性病:: ifstream的*鰭的std :: string的文件名) {

(*fin).open(filename, std::ios::in); 
return (*fin).good(); 

}

不管怎樣,謝謝你們的幫助。