get(C++)

[機能]

  istream クラスのメンバー関数であり,ストリームから文字または文字列を読み込みます.
get();
			
  ストリームから 1 文字取り出し,それを返します.区切り文字も取り出して格納します.C における fgetc 関数と基本的に同じです.
get(char*, int, char);
			
  区切り文字(デフォルトは,改行文字: '\n' )が現れるか,ファイルの終端に達するか,または,読み込んだ文字数が (指定された文字数 - 1) になるまで文字を読み込みます.区切り文字の取り出しも,また,格納も行いません.文字列は NULL 文字が付加されて指定した配列に格納されます.同じ istream クラスのメンバー関数である getline 関数においても同様の処理を行うことができますが,getline 関数では区切り文字も読み込みます(格納はしません).
get(char&);
			
  ストリームから 1 文字取り出し,参照型引数で指定された変数にその文字を格納します.区切り文字も取り出して格納します.
get(streambuf&, char);
			
  区切り文字を見つけるか,ファイルの終わりに達するまでストリームから文字列を取り出し,streambuf オブジェクトに格納します.streambuf の出力操作に失敗すると,ios::failbit フラグを設定します.

[形式]
	int get();
	istream& get(char* pch, int nCount, char delim = '\n');
	istream& get(unsigned char* puch, int nCount, char delim = '\n');
	istream& get(signed char* psch, int nCount, char delim = '\n');
	istream& get(char& rch);
	istream& get(unsigned char& ruch);
	istream& get(signed char& rsch);
	istream& get(streambuf& rsb, char delim = '\n');
		pch, puch, psch : 文字配列へのポインタ
		nCount : 文字列の終わりを示す NULL 文字を含む最大格納文字数
		delim : 区切り文字 (デフォルトは改行文字)
		rch, ruch, rsch : 文字への参照
		rsb : streambuf 派生クラスのオブジェクトへの参照
		
[使用例]

  1. get,getline,および,fgetc の比較
    #include <stdio.h>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
    	int k;
    	char str[81];
    /*
    		 区切り文字までの入力(getline と get)
    */
    	ifstream in1("data");
    					// 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();
    /*
    		 1文字入力(get)
    */
    	ifstream in2("data");
    
    	k = 0;
    	while (!in2.eof()) {
    		str[k] = in2.get();   // in2.get(str[k]); でも可
    		k++;
    	}
    	str[k] = '\0';
    	cout << str;
    
    	in2.close();
    /*
    		 1文字入力(fgetc)
    */
    	FILE *in3;
    	in3 = fopen("data", "r");
    
    	k = 0;
    	while ((str[k] = fgetc(in3)) != EOF)
    		k++;
    	str[k] = '\0';
    	cout << str;
    
    	fclose(in3);
    
    	return 0;
    }
    			
    (出力)たとえば,ファイル「data」に
    First test data
    Second test data
    のようなデータが入っていた場合は,以下のように出力される.
    First test data
    
    Second test data
    First test data
    Second test data
    ÿFirst test data   // FF はファイルの終端記号(Windowの場合)
    Second test data
    			
[参照]

getline, getc, gets, putc, putchar, puts, fgetc, fgets, fputc, fputs, getw, putw

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引