我试图在读取文件时获取文件每一行的开头地址,并将其打印到屏幕上,但由于某种原因,它只会导致无限循环。我正在读取的文件只是一个普通的文本文件。这就是我现在要做的事情。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char* argv){
ifstream file;
string name, lnstr;
int addy;
if (argc > 1)
name = argv[1];
else
{
cout << "Please Enter Your Filename: ";
getline(cin, name);
}
file.open(name.data());
if(!file)
{
perror(name.data());
exit(1);
}
addy = 0;
while(getline(file, lnstr))
{
cout << file.seekg(addy, ios::beg) << endl;
addy++;
}
}
即使我把 0 作为 seekg 的第一个参数,它仍然会导致无限循环,或者它只是多次显示相同的数字。不知道我错过了什么。
当你调用ios::beg时,你设置了get指针到文件开头的位置。您实际上不需要此调用,此代码应该适合您:
file.open(name.c_str()); // open file
if(file) {
while(getline(file, lnstr)) {
cout<< lnstr <<endl;
}
}
更多关于寻找。
我认为你想要tellg
,而不是seekg
。