C++で文字列内のスペースをハイフンに置き換える方法
C++のプログラミングでは、文字列に含まれるスペースを別の文字に置き換えたい場面がよくあります。本記事では、文字列中のスペースをハイフン(-)に置き換えるシンプルなプログラムを紹介します。
処理の流れ
まず、std::stringクラスのlength()関数を使って文字列の長さを取得します。その後、forループで文字列を先頭から1文字ずつ走査し、スペース(' ')が見つかった箇所をハイフン('-')に置き換えていきます。
サンプルコード
#include <cstring>
#include <iostream>
using namespace std;
int main(){
// 元の文字列を宣言
string str = "Coding in C++ programming";
cout<<"Normal String::"<<str<<endl;
for (int i = 0; i < str.length(); ++i) {
// スペースを '-' に置き換える
if (str[i] == ' ') {
str[i] = '-';
}
}
// ハイフンに置き換えた文字列を出力
cout <<"Output string::"<< str << endl;
return 0;
}
実行結果
このプログラムを実行すると、文字列内のすべてのスペースがハイフンに置き換えられ、以下のような出力が得られます。
Normal String::Coding in C++ programming Output string::Coding-in-C++-programming
別の方法:std::replaceを使う
より簡潔に記述したい場合は、<algorithm>ヘッダーに含まれるstd::replace関数を使用する方法もおすすめです。たった1行で同じ処理を実現できます。
#include <algorithm> std::replace(str.begin(), str.end(), ' ', '-');
ループを自分で書く必要がなく、コードの意図も明確になるため、実務ではこちらの方法がよく使われます。状況に応じて使い分けるとよいでしょう。
-
C++で文字列を最短の長さにエンコードするアルゴリズム(区間DP)
問題概要空でない文字列が与えられます。この文字列を、エンコード後の長さが最小になるようにエンコードすることを考えましょう。エンコードの規則は k[encoded_string] という形式です。これは、角括弧内の encoded_string がちょうど k 回繰り返されることを意味します。ただし、以下の条件があります。k は正の整数であることencoded_string は空であってはならず、余分な空白も含めない入力文字列には小文字の英字のみが含まれると仮定できるエンコードしても文字列が短くならない場合は、エンコードを行わない例えば、入力が aaaaa の場合、出力は 5[a] となります。
-
【C++】二分木を括弧付きの文字列に変換する方法
この問題では、二分木が与えられます。求められているのは、C++で二分木を括弧付きの文字列に変換するプログラムを作成することです。 二分木の各ノードの値は整数であり、先行順巡回(プレオーダー走査)の順序でプログラムに入力されます。生成する文字列には整数と括弧「()」のみを含めることができ、さらに最適化されている必要があります。つまり、不要な空の括弧ペアはすべて取り除かなければなりません。 二分木とは、各ノードが最大2つの子ノードを持つという特別な条件を満たす木構造のことです。 二分木の例 先行順巡回:[4, 1, 8, 3, 9, 2, 5] 具体例を見ながら問題を理解しましょう。 入力 p