-PR-
解決済み

ファイルから読みこむ方法

  • すぐに回答を!
  • 質問No.98875
  • 閲覧数842
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

Unix C++でファイルから、特定の行を読みこむことは可能でしょうか。
例えば、5行目から最後の行まで。10行目から20行目。等。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル12

ベストアンサー率 75% (398/526)

 CやC++には、テキストファイルから指定した行を読み込むという関数は用意されていません。
 ですので、ファイル先頭から行単位で読んでいき、読んでいる行数を変数でカウントしながら、目的の行だけ配列に入れるなどの処理を行うことになります。

 行単位の読み込みは、istream系オブジェクトに用意されたgetlineメソッドで行えばよいでしょう。

#include <iostream.h>
#include <fstream.h>

int main(void)
{
  ifstream fin;
  int s = 10;   // 先頭からなら 1 を指定する
  int e = 20;   // 末尾までなら -1 を指定する
  const int bufsize = 256;
  char buf[bufsize];

  fin.open("xxx", ios::in | ios::nocreate);
  if (fin.fail()) {
    cerr << "ファイルを開けません\n";
    return 1;
  }
  for (int i = 1; i < s; i++)   // 読み飛ばし
    fin.getline(buf, bufsize);
  for (int i = s; i<=e || (e==-1 && !fin.eof()); i++) {
    fin.getline(buf, bufsize);
    cout << buf << endl;
  }
  fin.close();

  return 0;
}

 ところで、これまでの回答には何の補足もお礼もありませんが、解決はしたのですか?未解決なら分からないところを書かないと、新しい回答は書きにくいものですよ。
お礼コメント
noname#794

getlineという関数もあるのですね。
初めて知りました。

回答を読む時間しかなくて、お礼が遅くなってしまってました。
これからはこまめに見るようにしたいと思います。

回答ありがとうございました。
投稿日時 - 2001-07-05 14:27:30
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 48% (36/74)

fgetsのループで出来ます。詳細はヘルプを見て下さい。 ...続きを読む
fgetsのループで出来ます。詳細はヘルプを見て下さい。
お礼コメント
noname#794

ありがとうございました。
なんとか解決しました。
投稿日時 - 2001-07-05 14:20:58


  • 回答No.2
レベル13

ベストアンサー率 37% (419/1115)

L_E_Dさんも書かれていますがfgets等行単位で読み込む関数を使えば可能です。 しかしどうも文面から察するにロジックの組み立てに慣れていないのではないでしょうか? 少なくともファイルがオープンできていれば後はfor文等で簡単に出来ます。(カウンターで行数をカウントすれば良いですよね) 頭から4行目までは読み出すだけで捨てておいて5行目からEOFが出るまで読み込んでいけば最初の例はクリアできますよ ...続きを読む
L_E_Dさんも書かれていますがfgets等行単位で読み込む関数を使えば可能です。
しかしどうも文面から察するにロジックの組み立てに慣れていないのではないでしょうか?
少なくともファイルがオープンできていれば後はfor文等で簡単に出来ます。(カウンターで行数をカウントすれば良いですよね)
頭から4行目までは読み出すだけで捨てておいて5行目からEOFが出るまで読み込んでいけば最初の例はクリアできますよね。
2番目の例も10行目から20行目までの読み込みが終わったらループを抜ければ良いだけです。

それともひょっとしたらUnixのコマンド(tail等)で同様のことが一発で出来るのでUnix環境ならC++でも出来ると誤解されていますか?
環境が変わってもロジック的なところは共通ですよ。
お礼コメント
noname#794

必要な行だけを使えばよかったのですね。
そこまで考え付きませんでした。
なんか便利な関数があったりするのかなあって思ったので質問したのですが・・・。
回答ありがとうございました。
投稿日時 - 2001-07-05 14:24:25
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ