文字列操作:concat、substr、find、replace
std::string APIで文字列の連結、切り出し、検索、置換を行います。
「文字列操作:concat、substr、find、replace」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。
+による連結
+演算子は2つの文字列を結合して、新しい文字列を作成します。+=はその場で追加します。
std::string a = "Hello, ";
std::string b = "World";
std::string c = a + b; // "Hello, World"
a += b; // a is now "Hello, World"効率的な追加
長い文字列に対して+を繰り返し使うと、一時オブジェクトが多数作成されます。頻繁に実行されるループでは、+=またはappend()を使用してください。
std::string result;
for (auto& word : words) {
result += word;
result += ' ';
}substr による部分文字列
substr(pos, len) は、pos から始まる新しい文字列を返します。len を省略すると、文字列の末尾までが対象になります。
std::string s = "Hello, World";
std::cout << s.substr(0, 5); // "Hello"
std::cout << s.substr(7); // "World"部分文字列を検索する: find
find(needle) は、最初に一致した位置のインデックスを返します。見つからない場合は std::string::npos を返します。
std::string s = "the quick brown fox";
auto pos = s.find("quick");
if (pos != std::string::npos)
std::cout << "Found at " << pos;位置を指定して検索する
2 番目の引数を渡すと、特定のインデックスから検索を開始できます。すべての出現箇所を見つけるときに便利です。
std::string s = "abc abc abc";
size_t pos = 0;
while ((pos = s.find("abc", pos)) != std::string::npos) {
std::cout << pos << ' ';
pos += 3;
}rfind: 末尾から検索する
rfind は最後に出現する位置を見つけます。find_first_of と find_last_of は、文字の集合に含まれるいずれかの文字を検索します。
その場で置換する
replace(pos, len, str) は、pos にある len 個の文字を str で置き換えます。置き換え後の文字列は異なる長さにできます。
std::string s = "Hello, World";
s.replace(7, 5, "C++");
std::cout << s; // "Hello, C++"文字を削除する
erase(pos, len) は部分文字列を削除します。引数なしで erase() を呼び出すと、文字列全体が空になります。
std::string s = "Hello, World";
s.erase(5, 2); // removes ", "
std::cout << s; // "HelloWorld"文字を挿入する
insert(pos, str) は pos に str を挿入し、それ以降の内容を右に移動します。
std::string s = "HelloWorld";
s.insert(5, ", ");
std::cout << s; // "Hello, World"文字列を比較する
標準の比較演算子または compare() を使用します。比較は辞書順で行われます。
std::string a = "apple", b = "banana";
if (a < b) std::cout << "apple comes first";すべての出現箇所を置換する
標準ライブラリには、すべてを一度に置換する単一の関数はありません。簡単なヘルパー関数を作成するか、std::regex を使用します。
void replaceAll(std::string& s, const std::string& from, const std::string& to) {
size_t pos = 0;
while ((pos = s.find(from, pos)) != std::string::npos) {
s.replace(pos, from.size(), to);
pos += to.size();
}
}確認問題
部分文字列が存在しない場合、"hello".find("xyz") は何を返しますか。
まとめ
std::string には豊富な API があります。結合には + と +=、部分文字列の取り出しには substr、検索には find、編集には replace、erase、insert を使用します。find の後は、std::string::npos と比較してください。
よくある質問
「文字列操作:concat、substr、find、replace」レッスンは無料ですか?
はい。「文字列操作:concat、substr、find、replace」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。
「文字列操作:concat、substr、find、replace」で何を学びますか?
std::string APIで文字列の連結、切り出し、検索、置換を行います。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C++ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「文字列操作:concat、substr、find、replace」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC++ Academyレッスンでコードを書いて実行できますか?
はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- std::stringとC形式のchar配列
- 文字列操作:concat、substr、find、replace
- 解析のための文字列ストリームstringstream
- 文字列変換:to_stringとstoi