ストリームクラス(istream)共通メンバー関数の入力

5142 ワード

C++標準ライブラリには、外付け入力操作を処理するクラスistreamがあります.よく使われるcinはistreamのクラスオブジェクトです.したがって、cinの代わりに新しい入力ストリームオブジェクトを再定義して入力を操作することができます.一般的なistreamクラスメンバー関数には、次のものがあります.
istreamクラス
istream::getline()関数
プロトタイプ:istream&getline(char*s,streamsize n,char delim)は1行の文字列を抽出し、sはデータを格納する変数の名前、nは入力データの長さ、delimは終了のフラグ文字(遭遇したら終了、データの長さを無視して、やめてもいい)
  char name[256];

  std::cout << "Please, enter your name: ";
  std::cin.getline (name,256);
  std::cout << "Hell0, " << name;

NOTE: cin.getline()はgetline()とは異なり、getline()の原型はistream&getline(istream&is,string&str,char delim)であり、使用前にヘッダファイルを含まなければならない.その使用例は以下の通りである(同様にdelimは書かなくてもよいが、デフォルトはリターン終了):
string line;

cout << "please cin a line:" << endl;
getline(cin,line,'#');
cout << "The input line is:" << line;

istream::ignore()関数
プロトタイプ:istream&ignore(streamsize n=1,int delim=EOF)入力ストリームのn文字を無視するか、入力ストリームの値がdelimに等しい場合に無視を停止して返します.
char first[10], last[10];
cin >> first;
cin.ignore(256, '\0');
cin >> last;
cout << endl << first << endl << last << endl;

istream::get()関数
get()の主な関数の原型は以下の3種類がある:1).int get(); 指定した入力ストリームから1文字(空白文字を含む)を読み込む.このget関数は、入力ストリーム内のファイル終端に遭遇したときにEOFを返します.
char ch;
ch = cin.get();
cout << ch << endl;

2). istream& get (char& c); 入力ストリームから1文字(空白文字を含む)を読み出し、文字変数cに格納する.実際にget(char&c)はget()とほぼ同じ役割を果たしています.
char ch;
cin.get(ch);
cout << ch << endl;

3). istream& get (char* s, streamsize n, char delim = ‘’); 入力ストリームからn−1文字を読み出し、文字ポインタsが指すメモリに格納する.n−1文字を読み出す前に指定された終了文字delimに遭遇した場合、読み出しは事前に終了する.プログラムは文字列の最後に'0'を追加して終了を表します.
char *s;
cin.get(s, 18, '\#');
if(s[17] == '\0')
    cout << s << endl;

peek()関数
プロトタイプ:int peek()この関数は、入力ストリームの次の文字を表示するために使用されますが、取り出しません(つまり、入力ストリームの中にあります).文字ポインタは元の位置に留まっている.
char s[20], ch;
int count=0;
while(cin.get(ch))
{
    s[count]=ch;
    count++;
    if(cin.peek() == '
'
) break; }

putback()関数
プロトタイプ:istream&putback(char c);1つの文字を入力ストリームに戻す.チェック用get()でデータの先頭を特定して戻してから操作できます.
read()関数
プロトタイプ:istream&read(char*s,streamsize n);この関数は、入力ストリームのn長のデータセグメントを純粋に抽出してsに保存するだけで、sの内容をチェックしたり、末尾にnull文字('0')を追加したりしません.抽出中に失敗した場合、sは前に抽出したコンテンツを保存し、eofbitおよびfailbitを1に設定します.
gcount関数
プロトタイプ:streamsize gcount()const;最後の非正規操作で読み取った文字数、非正規操作(すなわち>>を除く他の入力ストリームデータを読み込む操作、例えばget、getline、ignore、peek、read、readsome、putback and ungetなど);
char str[20];
cout << "Please, enter a word: ";
cin.getline(str,20);
cout << cin.gcount() << " characters read:" << str << '
'
;

参照リンク:http://www.cplusplus.com/reference/istream/istream/