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

C++を使って文字列から特定の単語を削除する方法

本記事では、与えられた文字列から指定した単語を削除する問題を解説します。まず、具体的な例を見てみましょう。

入力 : str = "remove a given word", word = "remove"
出力 : "a given word"

入力 : str = "god is everywhere", word = "is"
出力 : "god everywhere"

解決のためのアプローチ

文字列から特定の単語を削除するには、シンプルな手法を用いることができます。手順は以下の通りです。

  • まず、与えられた文字列を2次元配列(マトリックス)形式に変換し、各行に1つの単語を格納します。
  • マトリックス内から対象の単語を検索し、見つかった行をヌル文字で置き換えます。
  • 最後に、再構成した文字列を出力します。

サンプルコード

#include <bits/stdc++.h>
using namespace std;
int remove_word (string str, char word[]) {
    char matrix[10][30];
    int i = 0, j = 0, k = 0, len1 = 0, len2 = 0;

    // 文字列内の各単語を2次元配列の行に格納する
    for (i = 0; str[i] != '\0'; i++) {
        if (str[i] == ' ') {
            matrix[k][j] = '\0';
            k++;
            j = 0;
        }else{
            matrix[k][j] = str[i];
            j++;
        }
    }
    // 対象の単語を検索し、見つかった行にヌル文字を代入する
    matrix[k][j] = '\0';
    j = 0;
    for (i = 0; i < k + 1; i++) {
        if (strcmp (matrix[i], word) == 0) {
            matrix[i][j] = '\0';
        }
    }

    j = 0;
    // 再構成した文字列を出力する
    for (i = 0; i < k + 1; i++){
        if (matrix[i][j] == '\0')
            continue;
        else
            cout << matrix[i] << " ";
    }

    cout << "\n";
}

int main () {
    char str1[] = "remove a given word", word1[] = "remove";
    char str2[] = "god is everywhere", word2[]="is";
    // 文字列から単語を削除して出力する関数を呼び出す
    remove_word (str1, word1);
    remove_word (str2, word2);

    return 0;
}

実行結果

a given word
god everywhere

コードの解説

このプログラムの動作を順番に見ていきましょう。

  • 文字列と削除対象の単語を初期化し、削除処理を行う関数を呼び出します。
  • ループ処理を使用して、文字列の各単語を2次元配列の各行に格納します。スペースが見つかるまで1文字ずつ格納していきます。
  • strcmp() 関数を使って各行の単語と削除対象の単語を比較し、一致した行にヌル値を代入します。
  • 最後に、マトリックスの各行を出力することで、単語が削除された文字列を表示します。

まとめ

本記事では、文字列を2次元配列に格納し、該当する単語をヌル値で置き換えることで、文字列から指定した単語を削除する方法を解説しました。サンプルコードはC++で記述していますが、同じロジックはC言語、Java、Pythonなど他のプログラミング言語でも実装可能です。皆さんの学習の一助となれば幸いです。

  1. C++でstd::stringから空白を削除する方法

    ```html この記事では、C++でstd::stringから空白(スペース)を取り除く方法を解説します。空白の削除には、<algorithm>ヘッダーで提供されるremove()関数を使用します。この関数は、処理対象の範囲の先頭と末尾を指す2つのイテレータと、削除したい値を第3引数として受け取ります。入力:文字列 "This is C++ Programming Language" 出力:文字列 "ThisisC++ProgrammingLanguage"アルゴリズムステップ1:文字列を取得する ステップ2:remove()関数を使って、

  2. C#で文字列から重複する文字を削除する方法(HashSetの活用)

    C#では、HashSet<char> を利用することで、文字列に含まれる重複した文字を非常に簡単に取り除くことができます。本記事では、その基本的な考え方と具体的なサンプルコードを紹介します。 重複除去の基本的な考え方 まず、次のような文字列を用意します。 string str = "ppqqrr"; この文字列には「p」「q」「r」がそれぞれ2回ずつ含まれています。ここで、文字列を char 型として HashSet にマッピングします。HashSet は「同じ要素を1つしか保持しない」という特性を持つコレクションのため、この操作だけで重複文字が自動的に除去さ