1

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

#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的第一个参数,它仍然会导致无限循环,或者它只是显示相同的数字一堆。不知道我错过了什么。

4

2 回答 2

3

当您调用 ios::beg 时,您将 get 指针的位置设置为文件的开头。您实际上并不需要此调用,此代码应该适合您:

file.open(name.c_str()); // open file
if(file) {
  while(getline(file, lnstr)) {
    cout<< lnstr <<endl;
  }
}  

更多关于 seekg 的信息

于 2012-04-17T04:39:18.727 回答
2

我想你想要tellg,不是seekg

于 2012-04-17T04:43:17.023 回答