开始地址无限循环

Beginning Address Endless Loop

本文关键字:无限循环 地址 开始      更新时间:2023-10-16

我试图在读取文件时获取文件每一行的开头地址,并将其打印到屏幕上,但由于某种原因,它只会导致无限循环。我正在读取的文件只是一个普通的文本文件。这就是我现在要做的事情。

#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