Accelerated C++ 第1章
入出力ライブラリのバッファがフラッシュされるケース
- バッファが一杯になった場合
- 標準入力ストリームから、読み込むよう要求された場合
- 明示的にフラッシュを要求した場合
最近バッファのフラッシュが気になるようなプログラムは書いてないので、ちょっと懐かしい気分。
std::string
std::string s とするとき、s + t の t には、std::string、文字列リテルのほか文字でも良い。
なるほど。
課題
1-0
省略
1-3
正しい。同じ名前の変数が定義されているが、別のブロック内の定義のため、スコープが異なっており、問題なし。
1-4
正しい。同じ名前の変数が定義されているが、入れ子のブロック内の定義のため、スコープが異なっており、問題なし。
3行目末尾を};}としても空文が挿入されるだけで問題なし。
1-4
正しい。同じ名前の変数が定義されているが、入れ子のブロック内の定義のため、スコープが異なっており、問題なし。
1-5
正しくない。xの出力が定義されているブロックの外で行われており、参照できない。
修正は出力をブロックの中に入れる(行末の}を1行下へ移動)
1-6
1回の入力で、2回の出力が実行される。これは11ページに記載してある標準ライブラリの動作仕様。
標準ライブラリは文字列を読むときに、始めにある空白文字は入力から捨て去り、次の空白文字か、ファイルの終わりに達するまでを読み込みます。