5

'\n'私は小さなおならを持っています:の改行文字のすべてのインスタンスを削除したいと思いますstd::string。手動のマルチネストforループではなく、STLを使用したいと思います。唯一の問題は、私がどのように忘れたかです...

動作しますかfor(...) { std::string::remove_if(...); } ;?使用する必要がありますstd::for_each(...,..., std::string::remove_if(...));か?それとも何か他のものが必要ですか?

4

2 に答える 2

19

最初のアイデア:削除/消去のイディオム:

str.erase(std::remove(str.begin(), str.end(), '\n'), str.end());
于 2012-06-14T04:04:16.057 に答える
3

Boost.Rangeを使用している場合は、さらに短く機能します。

#include <boost\range\algorithm_ext\erase.hpp>

boost::remove_erase(str, '\n');
于 2013-09-20T15:39:40.667 に答える