Accelerated C++ 第1章 「string を使う」
Accelerated C++―効率的なプログラミングのための新しい定跡 (C++ In Depth Series)
- 作者: アンドリューコーニグ,バーバラ・E.ムー,Andrew Koenig,Barbara E. Moo,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2001/12
- メディア: 単行本
- 購入: 8人 クリック: 81回
- この商品を含むブログ (42件) を見る
例
#include <iostream> #include <string> int main() { // ユーザに名前を聞く std::cout << "あなたの姓を入力してください: "; // 姓を読み込む std::string name; // nameの定義 std::cin >> name; // nameに読み込む // あいさつを書く std::cout << "Hello, " << name << "!" << std::endl; return 0; }
1.1 入力
std::string name;
型が std::string で名前が name である変数を定義。
中カッコの中でのみ有効な変数なためローカル変数と呼ばれる。
変数だけ定義した場合、その値は自動的に初期化される。
std::cin >> name;
std::cin から name に読み込む。
一般に、入出力ライブラリはバッファと呼ばれる内部的なデータ構造に出力されるべきものを貯め、出力を最適化する。このような出力をフラッシュと言う。
バッファをフラッシュする3つのケース
- バッファが一杯になったとき
- ライブラリが標準入力ストリームから読み込むよう要求されたとき
- プログラマが明示的にフラッシュを要求したとき
std::endl は改行を出力したあとにバッファをフラッシュさせる。
1.2 名前にフレームをつける
#include <iostream> #include <string> int main() { // ユーザに名前を聞く std::cout << "あなたの姓を入力してください: "; // 姓を読み込む std::string name; std::cin >> name; // 後で使うため、あいさつのメッセージを作る const std::string greeting = "Hello, " + name + "!"; // 2行目と4行目 const std::string spaces(greeting.size(), ' '); const std::string second = "* " + spaces + " *"; // 1行目と5行目 const std::string first(second.size(), '*'); // すべてを出力する std::cout << std::endl; std::cout << first << std::endl; std::cout << second << std::endl; std::cout << "* " << greeting << " *" << std::endl; std::cout << second << std::endl; std::cout << first << std::endl; return 0; }
1.3 詳細
char
コンパイラが定義している型で普通の英文字を保持する組み込み型。
wchar_t
日本語などのワイド文字を保持できる大きな組み込み型。
std::string z(n, c);
z を std::string のオブジェクトとして定義し、その値を char型の文字 c を n 個コピーしたものとして初期化する。