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++;
    }
}

seekg の最初のパラメーターとして 0 を指定しても、無限ループになるか、同じ数が何度も表示されるだけです。何が欠けているのかわからない。

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 に答える