2011-07-30 8 views
1

私はどのような交換が最善で最速の方法であるか疑問に思っていますすべてはC++の文字列の中にありますか?C++文字列の内部を置換する最も良い方法は何ですか?

replace関数のループを必要としない方法はありますか?

+0

文字列のすべての文字列または部分文字列を置換しますか? –

+0

あなたはreg式を考えましたか? – BugFinder

+0

1)文字または部分文字列を置き換えますか? 2)srcとdest(複数)の文字列は同じ長さですか? – fazo

答えて

0

STLアルゴリズムでreplace_ifがあります:

#include <string> 
#include <iostream> 
#include <algorithm> 

bool is_f(char c) 
{ 
    return c == 't'; 
} 

int main(void) 
{ 
     std::string s = "this is a test string"; 
     std::replace_if(s.begin(), s.end(), is_f, 'd'); 
     std::cout << s << std::endl; 
     return 0; 
} 
+2

この例では、文字を文字で置き換えます。私はそれが彼が求めたものではないと思う –

1

あなたはTR1正規表現ライブラリを使用するように試みることができます。私はそれが最高かつ最速の方法であるかどうかわからないので、それはOPが求めているものと正確に一致しないかもしれないことに留意されたい。 C++ 0X標準を使用しているときに、名前空間名から「TR1」を捨ててしまうよう

#include <iostream> 
#include <regex> 
#include <string> 

int main() 
{ 
     std::string str = "Hello Earth from Mars! Mars salutes Earth!"; 
     std::tr1::regex rx("Mars"); 
     std::string str2 = std::tr1::regex_replace(str, rx, std::string("Saturn")); 

     std::cout << str2 << endl; 

     return 0; 
} 

正規表現はまた、今後のC++ 0X標準で利用できるようになります(正規表現を実装する規格に準拠の一部ライブラリfor C++ 0X)準拠のコンパイラ。

関連する問題