getline,get,および,fgets の比較
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char str[81];
/*
getline と get
*/
ifstream in1("data");
// 1行目の入力(改行を除く)
in1.get(str, 20);
cout << str << endl;
// 1行目の改行文字のため何も入力しない
in1.get(str, 20);
cout << str << endl;
// 1行目の改行を入力
in1.getline(str, 20);
cout << str << endl;
// 2行目を入力
in1.getline(str, 20);
cout << str << endl;
in1.close();
/*
fgets
*/
FILE *in2;
in2 = fopen("data", "r");
// 1行目と2行目を入力
// 改行が文字列に入っているためendlは必要ない
fgets(str, 20, in2);
cout << str;
fgets(str, 20, in2);
cout << str;
fclose(in2);
return 0;
}
(出力)たとえば,ファイル「data」に
First test data
Second test data
のようなデータが入っていた場合は,以下のように出力される.
First test data
Second test data
First test data
Second test data