3

私はまだSTLに慣れていないのでch、文字列内のすべての出現箇所を に置き換えたいと思っていましたk

私は次のことを試しました:

std::replace (str.begin(), str.end(), "ch", "k");

しかし、それはこのエラーを投げました:

no matching function for call to ‘replace(__gnu_cxx::__normal_iterator<char*,
  std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,
  __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>,
  std::allocator<char> > >, const char [2], const char [1])

replaceこの場合、どのように就職すればよいでしょうか?

注:同様の質問を見ましたが、その場合、OPは置き換えられる引数として「blah」と「b」を使用していましたが、ここでは両方の引数が文字列です。

4

3 に答える 3

3

C++ 標準ライブラリには、ここで探しているような置換関数は含まれていません。置換は、任意のシーケンス ( chars、ints、またはYourTypes のいずれかのシーケンス) 内の 1 つの要素のすべての出現を他の要素値に置き換える一般的なアルゴリズムです。たとえば、文字列の長さを変更する機能はありません。(どうしてですか? 文字列のサイズを変更するには、文字列のメンバー関数を呼び出す必要があり、文字列replaceへの参照はありません)

この種の置換が必要な場合は、Boost String Algorithmsライブラリを検討することをお勧めします。

于 2013-05-26T18:42:02.823 に答える