Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:文字列内の検索 | テキストデータ型
C++データ型
セクション 3.  6
single

single

bookチャレンジ:文字列内の検索

メニューを表示するにはスワイプしてください

find() メソッド

特定のテキストを string 内で検索する必要がある場合があります。これは .find() または .rfind() メソッドを使用して実行できます。まずは .find() メソッドから始めます。

find.h

find.h

copy
1
str.find("text to find")

最初に一致した部分の最初の文字インデックスを返します。

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }

検索で考慮する文字列内の最初の文字の位置も指定可能。pos 引数を使用して設定。pos インデックスより前の文字は検索時に無視。

3番目の文字から "code" を最初に見つける例。

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }

rfind() メソッド

.rfind() メソッドを使用すると、テキスト内で最後に出現する部分を見つけることができます。

rfind.h

rfind.h

copy
1
str.rfind("text to find")

.find() はテキストの最初の出現位置を取得し、.rfind() は最後の出現位置を検索し、reverse find(逆検索)を意味します。

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
Note
注意

.find() または .rfind() が部分文字列を見つけられない場合、string::npos を返します。これは無効な位置を表す数値定数です。size_t 型で表現できる最大値として格納されており、検索失敗を簡単に検出できます。

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
タスク

スワイプしてコーディングを開始

あなたはシンプルなメールフィルターを作成しています。目的は、ユーザーが任意のメールアドレスで登録できるようにし、codefinity.comからのメールを許可リストに登録することです。

関数isAllowedEmailは、emailstring型で受け取ります。

  1. rfind()を使って、メールアドレス内の最後の'@'記号を検索します。
  2. rfindの結果を-1と比較し、'@'記号が存在するかどうかを確認します。もし'@'が見つからなければ、そのメールアドレスは無効なのでfalseを返します。
  3. 文字列変数domainを空文字列で初期化します。
  4. forループを使い、atPos + 1からemailの長さまで、'@'の後ろの文字を順に処理します。
  5. 各イテレーションで、その文字をdomain変数に追加します。
  6. domain"codefinity.com"と等しければtrueを返し、それ以外の場合はfalseを返します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  6
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt