C++ 设置获取指针

C++ 设置获取指针,c++,C++,我有一个我正在做的课堂专题,我不确定我是否完全理解了这个问题。说明如下: 从流中读取时,每次读取字符时,指针都会递增一。这样你就可以得到下一个角色。如果要读取同一文件两次,该怎么办?您需要将“get”点重置为0。在本例中,假设文件numbers.txt存在,并且文件中按顺序包含数字1、2、3、4和5,中间有一个空格。您注意到,当get指针放回文件的0位置时,计数重置回1 我的问题是他到底想要什么 此外,我对如何处理int-location感到困惑。不是要求解决问题,至少是一个正确方向的提示 #i

我有一个我正在做的课堂专题,我不确定我是否完全理解了这个问题。说明如下:

从流中读取时,每次读取字符时,指针都会递增一。这样你就可以得到下一个角色。如果要读取同一文件两次,该怎么办?您需要将“get”点重置为0。在本例中,假设文件numbers.txt存在,并且文件中按顺序包含数字1、2、3、4和5,中间有一个空格。您注意到,当get指针放回文件的0位置时,计数重置回1

我的问题是他到底想要什么

此外,我对如何处理int-location感到困惑。不是要求解决问题,至少是一个正确方向的提示

#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??

}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
bool GetInputFileStream(std::ifstream*fin,std::string文件名);
void SetGetPointer(标准::istream&fin,int位置);
int main()
{
std::ifstream-fin;
std::string filename=“numbers.txt”;
bool isOpen=GetInputFileStream(&fin,文件名);

std::cout教授给出的描述是需要在
SetGetPointer()中实现的

根据描述:
您需要将“get”点重置回0。
您可以看到该函数是如何使用的:
SetGetPointer(fin,0);


因此,您可以说
SetGetPointer()
在某个
位置设置
fin
。在上一个示例中,它将
fin
设置回开头。

您的教授给出的描述就是需要在
SetGetPointer()中实现的内容。

根据描述:
您需要将“get”点重置回0。
您可以看到该函数是如何使用的:
SetGetPointer(fin,0);


所以你可以说
SetGetPointer()
fin
设置在某个
位置
。在上一个示例中,它将
fin
设置回起始位置。

谢谢各位,结果是我的Bool函数很大一部分是错误的。它是按照我最初设置的方式从numbers.txt文件中获取输入的。我应该将Bool设置为:

> bool GetInputFileStream(std::ifstream*fin,std::string文件名) {

}


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

谢谢大家,结果是我的Bool函数大部分都错了。它是按照我最初设置的方式从numbers.txt文件中获取输入的。我应该将Bool设置为:

bool GetInputFileStream(std::ifstream*fin,std::string文件名) {

}


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

代码正在调用单参数版本的
seekg()
,其中
std::ios:beg
表示流的开始。正在忽略
location
参数。使用
location
的正确方法是调用双参数
seekg()
取而代之的是:
fin.seekg(location,std::ios_base::beg);
,它将查找相对于流开头的位置0(顺便说一句,
前面的
&
fin.seekg()
不是必需的)。代码正在调用
seekg()的单参数版本
,其中
std::ios:beg
表示流的开头。正在忽略
location
参数。使用
location
的正确方法是调用2参数
seekg()
fin.seekg(location,std::ios\u base::beg);
,它将寻找相对于流开头的位置0(顺便说一句,
前面的
&
。seekg()
不是必需的)。
(*fin).open(filename, std::ios::in);
return (*fin).good();