[C++] 行末の改行をchompしたい

perlだとchompで行末の改行を削除する。 C++にはこの用途の関数があるのか調べたところ、boostライブラリにはtrim()がある。サードパーティライブラリを除いたC++11の規定にはなさそう。

行末処理は文字列処理では使いたくなる機能なのでstackoverflowには以下の質問があった。

What’s the best way to trim std::string

趣旨は「自分はこういうやり方をしているんだけど、境界条件のところで失敗するかもしれないし、もっといいやり方はないでしょうか」というもの。 この質問というか課題が回答者のハッカー魂を刺激して、いろいろな回答が出ていた。

C++の<algorithm>ヘッダに定義されているfind_if, find_not_if,find_last_not_ifなどとラムダ関数を使って記述を簡素にする。結果のstringを作るやり方は、erase, substr, string()なさまざま。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。