No.3ベストアンサー
- 回答日時:
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;
}
ところで、これまでの回答には何の補足もお礼もありませんが、解決はしたのですか?未解決なら分からないところを書かないと、新しい回答は書きにくいものですよ。
getlineという関数もあるのですね。
初めて知りました。
回答を読む時間しかなくて、お礼が遅くなってしまってました。
これからはこまめに見るようにしたいと思います。
回答ありがとうございました。
No.2
- 回答日時:
L_E_Dさんも書かれていますがfgets等行単位で読み込む関数を使えば可能です。
しかしどうも文面から察するにロジックの組み立てに慣れていないのではないでしょうか?
少なくともファイルがオープンできていれば後はfor文等で簡単に出来ます。(カウンターで行数をカウントすれば良いですよね)
頭から4行目までは読み出すだけで捨てておいて5行目からEOFが出るまで読み込んでいけば最初の例はクリアできますよね。
2番目の例も10行目から20行目までの読み込みが終わったらループを抜ければ良いだけです。
それともひょっとしたらUnixのコマンド(tail等)で同様のことが一発で出来るのでUnix環境ならC++でも出来ると誤解されていますか?
環境が変わってもロジック的なところは共通ですよ。
必要な行だけを使えばよかったのですね。
そこまで考え付きませんでした。
なんか便利な関数があったりするのかなあって思ったので質問したのですが・・・。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) エクセルVBA 3 2022/06/11 16:01
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
c言語でのfscanfについて
C言語・C++・C#
-
特定の文字列が一致する行から、文字列を抽出する方法
C言語・C++・C#
-
C++でのテキストファイル読み込みの行指定について
C言語・C++・C#
-
-
4
C言語 ファイルの指定された行を表示
C言語・C++・C#
-
5
Getlineについて・・・・・・
C言語・C++・C#
-
6
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
7
【C&C++】指定行のみファイル書き込み
C言語・C++・C#
-
8
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
9
char*を初期化したいのですが
C言語・C++・C#
-
10
数字の入った配列をファイルへ出力。
C言語・C++・C#
-
11
改行を読み飛ばす
C言語・C++・C#
-
12
C言語で複数列のデータを1列のみ読み込みたい
C言語・C++・C#
-
13
C言語で特定の行を抽出する方法を教えてください。
C言語・C++・C#
-
14
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
比較回数と交換回数表示について
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
std::set<int> で、ある値が何...
-
C言語で三目並べをするプログラ...
-
商と剰余を同時に求める(C言語)
-
if と配列の組み合わせ
-
【C++】関数ポインタの使い方
-
並列プログラミングのπ計算につ...
-
c言語
-
HANDLEて何ですか?
-
read関数をノンブロッキングで...
-
卒業研究でよく分からないとこ...
-
DLLをGetProcAddress()で実行で...
-
GlobalAllocの変数を関数に引き...
-
シグマ公式・・・C言語
-
ファイルから読みこむ方法
-
c言語の問題です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報