blog

C++プログラミング学習ノート第8章

istream: 入力操作を提供する入力ストリーム型。 cin : 標準入力からデータを読み込むistreamオブジェクト。 cout: 標準出力にデータを書き込む ostream オブジェクト。 c...

Feb 11, 2020 · 3 min. read
シェア

IO

  • istream: 入力操作を提供する入力ストリーム型。
  • ostream: 出力ストリーム型。
  • cin:標準入力からデータを読み込むistreamオブジェクト。
  • cout: 標準出力にデータを書き出す ostream オブジェクト。
  • cerr: 標準エラーにメッセージを書き込む ostream オブジェクト。
  • 演算子 <<: istreamオブジェクトから入力データを読み込むために使用します。
  • << />
  • getline関数:与えられたistreamオブジェクトから1行のデータを読み込み、与えられたstringオブジェクトに格納します。

IOクラス

標準ライブラリで定義されているIO型

  • iostream ヘッダーファイル:標準ストリーム、istream、ostream などからデータを読み書きします。
  • fstream ヘッダーファイル: ファイル、ifstream、ofstream などからデータを読み書きします。
  • sstream ヘッダファイル: 文字列、istringstream、ostringstream からのデータの読み取りと書き込み

IOオブジェクトのコピーや割り当てはできません

  • IOオブジェクトはコンテナには存在できません。
  • 正式なパラメータと戻り値の型もストリーム型にはできません。
  • 正式なパラメータと戻り値の型は、一般にストリームへの参照です。
  • IO オブジェクトの読み書きはその状態を変更するので、渡された参照と返された参照は const にはできません。

ストリームの条件付き状態 strmはIO型

strm:iostate	//はマシンに依存しない型であり、条件付き状態を表現するための完全な機能を提供する。
strm:badbit	//ストリームがクラッシュしたことを示す
strm:failbit	//は、IO操作が失敗したことを示すために使用される。
strm:eofbit	//は、ストリームがファイルの終端に達したことを示すために使用される。
strm:goodbit	//は、ストリームがエラー状態でないことを示すために使用される。
s.eof()	//ストリームsのeofbitが設定されていれば真を返す。
s.fail()	//ストリームsのfailbitが設定されていれば真を返す。
s.bad()	//ストリームsのbadbitが設定されていれば真を返す。
s.good()	//ストリームsが有効な状態であれば真を返す。
s.clear()	//ストリームsの条件付きステータス・ビットをすべてリセットし、ストリームの状態をvalidに設定し、voidを返す。
s.clear(flags)	//ストリームsで指定された状態ビットをリセットしてvoidを返す。
s.setstate(flags)	//与えられたフラグビットに基づいて、ストリームsの対応する状態ビットが返される void
s.rdstate()	//戻り値はstrm型である。::iostate

出力バッファの管理

  • 各出力ストリームは、出力コードを実行するためのバッファを管理し、テキスト文字列はすぐに出力されることもあれば、オペレーティングシステムによってバッファに保存され、後で出力されることもあります。
  • バッファをフラッシュするには、以下のIOマニピュレータが使えます:
    • endl: 改行文字を出力し、バッファをフラッシュします。
    • flush: 文字を追加せずにストリームをフラッシュします。
    • ends: ヌル文字をバッファに挿入してフラッシュします。
    • unitbuf: 操作のたびにストリームにフラッシュを実行するように指示します。
    • nounitbuf: 通常のバッファリングに戻ります。
cout<<"hi"<<endl;
cout<<"hi"<<flush;
cout<<"hi"<<ends;
cout<<unitbuf;
cout<<nounitbuf;
  • 連想入出力ストリーム
cin >> ival;//coutのバッファをフラッシュする。

ファイル入出力

  • ヘッダーファイルfstreamは、ファイルIOをサポートする3つの型を定義しています:
    • ifstream は与えられたファイルからデータを読み込みます。
    • ofstreamは指定されたファイルにデータを書き込みます。
    • fstream は、指定されたファイルに対してデータを読み書きします。

fstream固有の操作

fstream fstrm;	//非束縛ファイルストリームを作成する。
fstream fstrm(s);	//ファイルストリームを作成し、文字列またはcharポインタであるsという名前のファイルをオープンする。
fstream fstrm(s, mode);	//前のコンストラクタと似ているが、指定されたモードでファイルをオープンする。
fstrm.open(s)	//sという名前のファイルを開き、fstrmにバインドする。
fstrm.close()	//fstrmにバインドされたファイルを閉じる
fstrm.is_open()	//fstrmに関連付けられたファイルが正常にオープンされ、クローズされていないかどうかを示すbool値を返す。

ファイルモード

in	//読み込みとして開く
out	//書き込みとして開く
app	//各書き込み操作の前にファイルの末尾に位置する。
ate	//ファイルを開いた後、そのファイルの終端を即座に特定する。
trunc	//ファイルの切り捨て
binary	//バイナリモードでIO操作を行う。

string

  • ヘッダーファイルstreamは、メモリIOをサポートするために3つの型を定義しています:
    • istringstream文字列からデータを読み込みます。
    • ostringstream文字列にデータを書き込みます。
    • stringstreamは、指定された文字列を読み書きできます。
  • stringstream固有の操作
sstream strm	//バインドされていないstringstreamオブジェクトを定義する。
sstream strm(s)	//でオブジェクトを初期化する。
strm.str()	//strmが保持する文字列のコピーを返す。
strm.str(s)	//sをstrmにコピーする。
Read next

どのように機能スロットルについて明確に話すには?

ファンクションスロットルのアプリケーションシナリオと頻度は、ファンクション安定化に比べて少し大きいです。 ビーンがヒットされる頻度を減らすことをスロットリングと呼びます。 右下にトップに戻るボタンが表示されます。 一回200msで十分なようです。 というわけで、コードを書き始めました。 以上、間違いや異なる見解があれば、議論するためにメッセージを残すことを歓迎します...

Feb 11, 2020 · 3 min read