1. ホーム
  2. c++

[解決済み] c++の文字列の中のcharの出現をすべて削除する方法

2022-03-07 15:34:07

質問

以下のように使用しています。

replace (str1.begin(), str1.end(), 'a' , '')

しかし、これはコンパイルエラーになります。

どうすればいいですか?

基本的には replace はある文字を別の文字に置き換え '' は文字ではありません。あなたが探しているのは erase .

参照 この質問 が同じ問題を解決しています。あなたの場合

#include <algorithm>
str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());

または boost のように、それがオプションであるならば。

#include <boost/algorithm/string.hpp>
boost::erase_all(str, "a");

これらのことは、すべて 参照 ウェブサイト . しかし、これらの機能を知らなければ、このようなことは簡単に手作業で行うことができます。

std::string output;
output.reserve(str.size()); // optional, avoids buffer reallocations in the loop
for(size_t i = 0; i < str.size(); ++i)
  if(str[i] != 'a') output += str[i];