C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++入門】substr()関数で部分文字列を取得する方法

C++における部分文字列とは

部分文字列(substring)とは、ある文字列の一部分を指します。C++では、標準ライブラリのsubstr()関数を使うことで、元の文字列から任意の部分文字列を簡単に取り出せます。

substr()関数は、次の2つの引数を受け取ります。

  • pos:部分文字列の抽出を開始する位置(先頭の文字は0番目)
  • len:抽出する文字数

以下に、C++で部分文字列を取得するプログラムの例を示します。

サンプルコード

#include <iostream>
#include <string.h>

using namespace std;
int main() {
    string str1 = "Apples are red";
    string str2 = str1.substr(11, 3);
    string str3 = str1.substr(0, 6);

    cout << "開始位置11・長さ3の部分文字列: " << str2 << endl;
    cout << "開始位置0・長さ6の部分文字列: " << str3;
    return 0;
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

開始位置11・長さ3の部分文字列: red
開始位置0・長さ6の部分文字列: Apples

プログラムの解説

まず、文字列変数str1が「Apples are red」で初期化されます。続いて、str2にはstr1の位置11から始まる長さ3の部分文字列が、str3には位置0から始まる長さ6の部分文字列がそれぞれ格納されます。

string str1 = "Apples are red";
string str2 = str1.substr(11, 3);  // "red" を取得
string str3 = str1.substr(0, 6);   // "Apples" を取得

最後に、coutを使ってstr2str3の内容が出力されます。

substr()関数を使う際のポイント

  • 文字列のインデックスは0から始まるため、先頭の文字を取り出したい場合は「0」を指定します。
  • lenを省略すると、開始位置から文字列の末尾までがすべて返されます。
  • posが文字列の長さを超えている場合、std::out_of_range例外がスローされるため注意が必要です。
  1. C++で解説:T秒後のカエルの位置を求める確率計算アルゴリズム

    n個の頂点からなる無向木(ツリー)があるとします。頂点には1からnまでの番号が付けられており、カエルは頂点1からジャンプを開始します。カエルは、現在いる頂点に隣接している「未訪問」の頂点へ、1秒でジャンプすることができますが、一度訪れた頂点へ戻ることはできません。ジャンプ先の候補が複数ある場合は、いずれも等しい確率でランダムに1つを選んで移動します。逆に、行ける未訪問の頂点がなくなったカエルは、その場で永遠に跳ね続けることになります。 木は辺の配列として与えられます。ここで求めたいのは、「t秒後にカエルが頂点targetの上にいる確率」です。 問題の例 たとえば、入力が n = 7、t = 2

  2. C++で円上に立つ人の真向かいの位置を求めるアルゴリズム

    問題概要 この問題では、2つの整数 N と M が与えられます。円の周りにはN人が等間隔で立っており、Mはそのうちのある一人の人の位置を表しています。私たちのタスクは、位置Mにいる人と正反対(直径を挟んで向かい合う)にいる人の位置を出力することです。 入出力例 入力: N = 6、M = 3 出力: 6 説明: 円の周りに6人が立っているとき、位置3にいる人と向かい合うのは位置6の人です。 解き方の考え方 円の中心を挟んで正反対の位置は、必ずちょうど半分(N/2)だけ離れた場所にあります。この性質を使うと、対象の人が円の前半にいるか後半にいるかによって、次の2つの場合に分けて考えることがで