我正在进行这个项目,我正在研究,我不确定我完全理解这个问题。说明如下:
当您从流中读取时,每次读取字符时指针都会加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 :(得分: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();
}
无论如何,谢谢你们的帮助。