MOOC C ++ノート(G)入力および出力ストリーム

入出力ストリーム

クラスの動作に関連する入力および出力ストリーム

TIMスクリーンショット20191030205008.png
IStream:クラスは、入力ストリームのために使用され、CINは、オブジェクトのクラスです。
ostream:出力ストリーム型で、COUTは、そのクラスのオブジェクトです。
ifstream:それはファイルクラスからデータを読み取るためです。
ofstreamの:クラスは、ファイルにデータを書き込むために使用されます。
iostream:クラスの両方の入力と出力の缶に使用されます。
fstreamの:両方のファイルからデータを読み込み、クラスファイルにデータを書き込むことができます。

標準ストリームオブジェクト

入力ストリームオブジェクト:入力CINと規格に接続された機器
の出力ストリームオブジェクト:標準出力デバイスが接続COUTである
ために接続された標準エラー出力デバイスCERR
に接続された標準エラー出力デバイス詰まら
デフォルト
cerr<<"hello,world"<<endlclog<<"hello,world"<<endl
し、cout<<"hello,world"<<endlとして
CINは、標準入力ストリームに対応キーボードからのデータの読み取り、ファイルからデータを読み取るためにリダイレクトすることができます。
COUTは、画面データの出力のために、ファイルにデータを書き込むようにリダイレクトすることができる、標準出力ストリームに対応します。
CERRエラーが画面にエラー情報を出力するための、標準出力ストリームに対応します。
画面にエラーメッセージを出力するための標準エラー出力に対応詰まりストリーム。
違いは、CERR CERRであり、ディスプレイに直接NAバッファ出力を詰まらせると、第1に目詰まりに情報出力バッファがフルまたはリフレッシュされたときに画面にバッファ出力に格納されます。

リダイレクト

freopen関数は、入力と出力のリダイレクトに使用されてもよいです

#include<iostream>  
using namespace std;
int main(){
    int x,y;
    cin>>x>>y;
    freopen("test.txt","w",stdout);//将标准输出重定向到test.txt文件  
    if(y==0)
        cerr<<"error"<<endl;
    else
        cout<<x/y;
    return 0;
}
#include<iostream>  
using namespace std;
int main(){
    double f;
    int n;
    freopen("test.txt","r",stdout);//cin被改为从t.txt中读取数据  
    cin>>f>>n;
    return 0;
}

入力ストリームを解析終了

あなたは、入力ストリームの終わりを決定するための次のメソッドを使用することができます。
while(cin>>x){}
入力はファイルからのものである場合、入力ストリームの場合でも終わり、ファイルの終わりをお読みください。
もしキーボードから入力し、入力ストリームの終わりを表す入力はCtrl + Z別々のライン。

ISTREAMクラスのメンバ関数

getlineの機能

istream&getline(char *buf,int bufSize);
BufSizeと-1は、バッファbufに入力ストリームから文字を読み込み、または読取りヒット「\ n」は、これまで(いずれか早い方カウントします)。
istream&getline(char *buf,int bufSize,char delim)
バッファbufに入力ストリームBUFSIZE-1文字から読み込み、またはDELIM文字を読むには、(いずれか早い方カウントする)これまでに遭遇しました。
どちらの関数も自動的に読み出されたデータは、bufに終わり「\ 0」に追加されます。「\ n」はまたはでdelimはBUFに読み込まれることはありませんが、入力ストリームから削除されます。この読み出しが完了したが、それが失敗した後に読み込まれます:入力ストリーム「\ n」の前の文字数またはdelimを満たすかbuf'Sizeを超えたが、読み取りエラーにつながる場合、結果はA。
入力は(!Cin.getline(...))が終了したかどうかを判断するために使用することができます。

EOF機能

bool eof()
入力ストリームの終わりかどうかを決定します

PEEK機能

int peek()
次の文字を返しますが、ストリームから削除されません。

プットバック機能

istream &putback(char c)
バック入力ストリームに文字ch

機能を無視

istream&ignore(int nCount=1,int delim=EOF);
nCountまで、ストリームから出会いのEOFの終わりに文字を削除します。

ストリームマニピュレータ(出力フォーマット)

整数基本ストリーム:ストリームマニピュレータ12月、10月、六角、setbase
単精度浮動小数点(精度てSetPrecision)は
広視野(setw、幅)が設けられ
、ユーザ定義のストリームマニピュレータを
流れマニピュレータを使用して
注:使用してストリームをマニピュレータは、#include <iomanip>を必要とします

整数演算子のフロー制御ベースストリームを作動させます

ストリームマニピュレータ12月、10月、六角

int n=10;  
cout<<n<<endl;  
cout<<hex<<n<<"\n"//十六进制输出  
       <<dec<<n<<"\n"//十进制输出
       <<oct<<n<<endl;//八进制输出

出力:
10 10 12れます


フローステアリング制御精度浮動小数点演算子

精度てSetPrecision
:精密用のメンバ関数呼び出しであるcout.precision(5)
ために呼び出してSetPrecisionストリームマニピュレータ、:cout<<setprecision(5);//連続出力
それらと同じ機能。
浮動小数点出力(非固定モード出力)の有効桁数を指定する
10進浮動小数点出力(出力固定小数点モード)後に有効桁数を指定すること
を指し方法:小数点以下の桁数が後ろに現れなければなりません(非部位特異的には、一般的に科学を指し、 )カウント
出力モード指定に設けcout<<setiosflags(ios::fixed)<<setprecision(6)<<x<<endl;
小数点のsetiosflags(IOS固定::)の位置は、固定出力モードを表し、または固定演算子を使用します。
固定小数点をキャンセルするresetiosflagsの(IOS ::固定)は、出力モードの位置を示します。

ドメインワイドストリームマニピュレータを設定します

(setw、幅)が広い視野を提供して
操作者setw、幅メンバ関数

int w=4;
char string[10];
cin.width(w);
cin>>string;
cout<<setw(5)<<endl;  

入力:1234
出力:123
注:CIN文字列を読み込むときは「\ 0」のための場所を確保するため、実際には3つだけの文字を読み込みます。
幅設定の有効性は、各読み出して出力する前に幅を設定する必要があり、使い捨てです。

その他の演算子

showpos非負の数が正の符号を表示します。
noshowpos非負の数が正の符号を示していません。
これは、出力点に固定された様子を表しています。
科学的な出力は、科学的表記法で表しました。
空白を埋めるためにsetfillが(CH)CHの文字が不足幅を示しています。
幅が十分に残っていない場合は、左揃えを表します。
右寄せ右。
これは、不十分な内部幅、中間充填フィル文字の周りのシンボリックと数値内訳を示し、

ユーザー定義のフローマニピュレータ

ostream&tab(ostream &output){
    return output<<'\t';
}
cout<<"aa"<<tab<<"bb"<<endl;

出力:AA BBの
このような理由があるため、オーバーロードされた<<のiostreamの、ストリームマニピュレータをカスタマイズするユーザーに許可する(メンバ関数)

ostream &operator
<<(ostream &(*p)(ostream &));

内部関数は、関数がpによって指さ呼び出し、*この六角の引数として、月、OCTは機能があります。

おすすめ

転載: www.cnblogs.com/z-y-k/p/11767792.html
おすすめ