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