get関数
6485 ワード
get関数
文書ディレクトリ get関数 1. パラメータなしget関数 2. パラメータ付きget関数 3. 3つのパラメータを持つget関数 1.パラメータなしget関数
cin.get()
指定した入力ストリームから空白文字、スペース、改行、tabなどを含む文字を抽出し、関数の戻り値が読み込まれた文字です.入力ストリームのファイル終端に遭遇すると、関数値はファイル終端フラグEOF(End Of File)を返し、一般的にはEOFを-1で表し、0や正の値ではなく-1で表し、文字のASCIIコードと混同されないことを考慮しているが、C++システムによって使用されるEOF値が異なる可能性がある.
実行結果
enter a sentence: I study C++ very hard.↙(1行の文字を入力)I study C++very hard.(その行文字を出力)^Z↙(プログラム終了)
C言語のgetchar関数とストリームメンバー関数cin.get()の機能は同じで、C++はCのこのような使い方を保留して、getcharを使うことができます© キーボードから1文字を読み込んでcに割り当てます.
2.パラメータを持つget関数
cin.get(ch)
入力ストリームから1文字を読み出し、文字変数chに付与する.読み取りに成功した場合、関数はtrue(真)を返し、失敗した場合(ファイルの終端に遭遇した場合)、関数はfalse(偽)を返します.例13.6は以下のように書き換えることができる.
3.3つのパラメータを持つget関数
cin.get(文字配列、文字個数n、終端文字)cin.get(文字ポインタ、文字個数n、終端文字)
入力ストリームからn−1文字を読み出し、指定された文字配列(または文字ポインタが指す配列)に割り当て、n−1文字を読み出す前に指定された終了文字に遭遇した場合、読み出しを早期に終了する.読み取りに成功した場合、関数はtrue(真)を返し、失敗した場合(ファイルの終端に遭遇した場合)、関数はfalse(偽)を返します.
実行結果
enter a sentence: I study C++ very hard.↙ I study C
入力ストリームには22文字があるが、get関数で指定されたnが10であるため、n−1文字(すなわち9文字)を読み出し、文字配列chの上位9要素に付与する.n-1を指定すると、なぜ9文字しか読めないのでしょうか.文字列が格納されているため、9文字の後に文字列終了フラグを追加し、実際に配列に格納されているのは10文字です.
get関数の3番目のパラメータは省略できますが、デフォルトは''です.次の2行は等価です.
cin.get(ch,10,’’); cin.get(ch,10);
終了文字は、他の文字でも使用できます.のように
cin.get(ch,10,‘x’);
文字’x’に遭遇した場合の読み出しを停止する
文書ディレクトリ
cin.get()
指定した入力ストリームから空白文字、スペース、改行、tabなどを含む文字を抽出し、関数の戻り値が読み込まれた文字です.入力ストリームのファイル終端に遭遇すると、関数値はファイル終端フラグEOF(End Of File)を返し、一般的にはEOFを-1で表し、0や正の値ではなく-1で表し、文字のASCIIコードと混同されないことを考慮しているが、C++システムによって使用されるEOF値が異なる可能性がある.
#include
using namespace std;
int main( )
{
int c;
cout<<"enter a sentence:"<<endl;
while((c=cin.get())!=EOF)
cout.put(c);
return 0;
}
実行結果
enter a sentence: I study C++ very hard.↙(1行の文字を入力)I study C++very hard.(その行文字を出力)^Z↙(プログラム終了)
C言語のgetchar関数とストリームメンバー関数cin.get()の機能は同じで、C++はCのこのような使い方を保留して、getcharを使うことができます© キーボードから1文字を読み込んでcに割り当てます.
2.パラメータを持つget関数
cin.get(ch)
//ch
入力ストリームから1文字を読み出し、文字変数chに付与する.読み取りに成功した場合、関数はtrue(真)を返し、失敗した場合(ファイルの終端に遭遇した場合)、関数はfalse(偽)を返します.例13.6は以下のように書き換えることができる.
#include
using namespace std;
int main( )
{
char c;
cout<<"enter a sentence:"<<endl;
while(cin.get(c)) // c, ,cin.get(c)
{cout.put(c);}
cout<<"end"<<endl;
return 0;
}
3.3つのパラメータを持つget関数
cin.get(文字配列、文字個数n、終端文字)cin.get(文字ポインタ、文字個数n、終端文字)
入力ストリームからn−1文字を読み出し、指定された文字配列(または文字ポインタが指す配列)に割り当て、n−1文字を読み出す前に指定された終了文字に遭遇した場合、読み出しを早期に終了する.読み取りに成功した場合、関数はtrue(真)を返し、失敗した場合(ファイルの終端に遭遇した場合)、関数はfalse(偽)を返します.
#include
using namespace std;
int main( )
{
char ch[20];
cout<<"enter a sentence:"<<endl;
cin.get(ch,10,'
');//
cout<<ch<<endl;
return 0;
}
実行結果
enter a sentence: I study C++ very hard.↙ I study C
入力ストリームには22文字があるが、get関数で指定されたnが10であるため、n−1文字(すなわち9文字)を読み出し、文字配列chの上位9要素に付与する.n-1を指定すると、なぜ9文字しか読めないのでしょうか.文字列が格納されているため、9文字の後に文字列終了フラグを追加し、実際に配列に格納されているのは10文字です.
get関数の3番目のパラメータは省略できますが、デフォルトは''です.次の2行は等価です.
cin.get(ch,10,’’); cin.get(ch,10);
終了文字は、他の文字でも使用できます.のように
cin.get(ch,10,‘x’);
文字’x’に遭遇した場合の読み出しを停止する