C++言語講座 第1章 4回 メンバ関数

メンバ関数

文字列の長さ

キーボードから入力された文字列の長さを表示するプログラムを作りましょう。 [List 1]を入力、実行して下さい。

[List 1]

   1 #include <iostream>
   2 #include <string>
   3 using namespace std;
   4 
   5 int main()
   6 {
   7     string str;
   8     int l;
   9 
  10     cout << "適当な文字列を入力してください:";
  11     getline(cin, str); // 一行読み込む
  12 
  13     l = str.length();
  14     cout << "文字列 " << str << " の長さは " << l << endl;
  15 
  16     return 0;
  17 }


   1 getline(cin, str);

は前回説明した通り、キーボードから文字列を1行読み込んでいます。


   1 l = str.length();

というところで、新しいことをやっていますね。ここでは一体何をしているのでしょうか。画面に表示された結果を見てみると、オブジェクト l には、文字列 str の長さ(つまり、文字数)が代入されたようです。

str. というところを除くと、length() というふうに、(前回の min() や max() と同じような)普通の関数を実行しているように見えます。実は、この length() という関数は、オブジェクト str の中に入っている関数なのです。

   1 str.length()

とは、オブジェクト str の中の length() という関数を実行しろ。という意味なのです。

string型のオブジェクトの中には、すべて length() という関数が 入っています。このように、オブジェクトの中に入っている関数を メンバ関数(member function)と呼びます。string型のメンバ関数である length() 関数は、そのオブジェクトに代入されている文字列の長さを返してくれるメンバ関数ということです。string型のオブジェクトの中には他にも多くのメンバ関数が入っています。以下でいくつか紹介しましょう。

文字列の挿入

文字列の途中に文字列や文字列を挿入するには insert() メンバ関数を使います。以下のプログラムを実行してみて下さい。

[List 2]

   1 #include <iostream>
   2 #include <string>
   3 using namespace std;
   4 
   5 int main()
   6 {
   7     string str;
   8     int pos; // 文字列「hoge」を何文字目に挿入するか
   9 
  10     cout << "適当な文字列を入力して下さい:";
  11     getline(cin, str); // 一行読み込む
  12 
  13     cout << "入力された文字列に「hoge」を挿入します。"
  14          << "何文字目に挿入しますか? ";
  15     cin >> pos;
  16 
  17     str.insert(pos, "hoge");
  18     cout << "挿入後の文字列は「" << str << "」"
  19          << endl;
  20 
  21     return 0;
  22 }

ここで使ったのは string型の insert() メンバ関数です。insert() メンバ関数は、 挿入先の文字列.insert(何文字目に挿入するか, 挿入する文字列); と書くと、[List 2]のように、文字列を挿入してくれます。

文字列の削除

次は文字列の一部を削除する方法です。

[List 3]

   1 #include <iostream>
   2 #include <string>
   3 using namespace std;
   4 
   5 int main()
   6 {
   7     string str;
   8     int from, to;
   9 
  10     cout << "適当な文字列を入力して下さい:";
  11     getline(cin, str); // 一行読み込む
  12 
  13     cout << "文字列の一部を削除します。"
  14          << "何文字目から削除しますか? ";
  15     cin >> from;
  16     cout << "何文字目まで削除しますか? ";
  17     cin >> to;
  18 
  19     str.erase(from, to);
  20     cout << "削除後の文字列は「" << str << "」"
  21          << endl;
  22 
  23     return 0;
  24 }

ここで使ったメンバ関数は erase() です。

   1 str.erase(何文字目から削除するか, 何文字目まで削除するか);

と書くと、文字列 str の一部を削除してくれます。

文字列の検索

次は文字列を検索する方法です。

[List 3]

   1 #include <iostream>
   2 #include <string>
   3 using namespace std;
   4 
   5 int main()
   6 {
   7     string str, find_str;
   8     int pos;
   9 
  10     cout << "適当な文字列を入力して下さい:";
  11     getline(cin, str); // 一行読み込む
  12 
  13     cout << "文字列を検索します。。"
  14          << "検索したい文字列を入力して下さい:";
  15     getline(cin, find_str);
  16 
  17     pos = str.find(find_str);
  18     cout << "文字列「" << str << "」の中に、" << endl
  19          << "文字列「" << find_str << "」は"
  20          << pos << "文字目にあります" << endl;
  21 
  22     return 0;
  23 }

こんどは find() メンバ関数を使いました。

   1 str.find(検索したい文字列)

は 検索したい文字列 が str の何文字目にあるか返してくれます。

他にも多くのメンバ関数があります。マニュアルや参考書などで調べてみましょう。

wiredBeep/topics/Programming/Lang/Cpp/n1-04 (last edited 2007-10-24 13:53:39 by beeplex)