设置获取指针

时间:2015-11-14 03:07:33

标签: c++

我正在进行这个项目,我正在研究,我不确定我完全理解这个问题。说明如下:

  

当您从流中读取时,每次读取字符时指针都会加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??

}

2 个答案:

答案 0 :(得分:0)

您的教授给出的描述是需要在SetGetPointer()

中实施的内容

来自说明:Well you need to reset the 'get' point back to 0. 您可以看到该函数的使用方式: SetGetPointer(fin, 0);

因此,您可以说SetGetPointer()设置fin某个location。在前面的示例中,它将fin设置回到开头。

答案 1 :(得分:0)

谢谢大家,我认为Bool功能错误是其中很大一部分。它是从numbers.txt文件获取我设置的原始方式的输入。我应该把我的Bool作为:

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

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

}

无论如何,谢谢你们的帮助。