我有這個項目,我正在上課,我不確定我完全理解了這個問題。指令如下:設置獲取指針
當您從流中讀取數據時,每次讀取字符時指針都會加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??
}
代碼調用'seekg()'的單參數版本,其中'std :: ios:beg'表示流的開始。 'location'參數被忽略。使用'location'的正確方法是調用2參數'seekg()'代替:'fin.seekg(location,std :: ios_base :: beg);',這將尋求相對位置0到流的開始(順便說一下,'fin.seekg()'前面的'&'是不必要的)。 –