C++でstd::stringをトリミング(前後の空白削除)する最良の方法
C++における文字列のトリミングとは
本記事では、C++で文字列をトリミングする方法を詳しく解説します。「トリミング」とは、文字列の左端および右端に含まれる空白文字(スペースやタブなど)を取り除く処理のことです。
標準ライブラリだけでも実装は可能ですが、ここではより手軽で信頼性の高い「Boost文字列アルゴリズムライブラリ」を利用します。このライブラリには、trim_left() と trim_right() という2つの便利な関数が用意されており、両方を組み合わせることで文字列の両端を完全にトリミングできます。
各関数の役割
- boost::trim_left(): 文字列の先頭(左側)にある空白を削除します
- boost::trim_right(): 文字列の末尾(右側)にある空白を削除します
なお、Boostライブラリには両側を一度にトリミングできる boost::trim() 関数も用意されているため、実際の開発ではこちらを使うのが最もシンプルです。
サンプルコード
#include<iostream>
#include<boost/algorithm/string.hpp>
using namespace std;
int main(){
string myStr = " This is a string ";
cout << "The string is: (" << myStr << ")" << endl;
// 文字列をトリミング
boost::trim_right(myStr);
cout << "The string is: (" << myStr << ")" << endl;
boost::trim_left(myStr);
cout << "The string is: (" << myStr << ")" << endl;
}実行結果
$ g++ test.cpp $ ./a.out The string is: ( This is a string ) The string is: ( This is a string) The string is: (This is a string) $
コードのポイント
上記の例では、まず boost::trim_right() を呼び出すことで末尾の空白のみが削除され、続けて boost::trim_left() を呼び出すことで先頭の空白も削除されています。このように段階的に確認することで、それぞれの関数がどちら側の空白に作用しているかが明確になります。
もし先頭と末尾の両方をまとめて処理したい場合は、次のように boost::trim() を1回呼び出すだけで済みます。
boost::trim(myStr); // 先頭と末尾の空白を同時に削除
Boostライブラリを導入することで、自前で空白判定のループを書く必要がなくなり、可読性と保守性の高いコードを実現できます。
-
Javaで文字列を逆順にする最も簡単な方法は?reverse()メソッドの使い方を解説
組み込みのreverse()メソッドを使う(最も簡単な方法) Javaで文字列を逆順にする最も簡単な方法は、StringBufferクラスが提供するreverse()メソッドを使用することです。このメソッドは、現在のStringBufferオブジェクトの内容を反転し、その結果を新しいStringBufferオブジェクトとして返します。 手順は次の通りです。 反転したい文字列を引数に渡して、StringBufferクラスのインスタンスを生成します。 生成したオブジェクトのreverse()メソッドを呼び出します。 toString()メソッドを使って、再びString型に変換します。 サン
-
Pythonで例外をログに記録する最良の方法とは?
Pythonプログラムの開発や運用において、例外(エラー)が発生した際にその詳細をログとして残しておくことは、トラブルシューティングやデバッグを行う上で非常に重要です。Pythonでは標準ライブラリのloggingモジュールを使うことで、例外情報を簡単かつ確実にログへ記録できます。 logging.exceptionメソッドで例外ログを作成する まずloggingモジュールをインポートし、exceptブロック内でlogging.exception()メソッドを呼び出します。このメソッドは、指定したメッセージに加えて、発生した例外の種類やスタックトレース(Traceback)を自動的に付加して