2012-03-21 30 views
1

文字列の先頭に^を追加し、末尾に$を追加します。C++先頭と末尾に文字列を追加

std::string s1 (".V/.B/.R/"); 

使用する最善の方法はありますか?

s1.append(s1.begin(),"^"); 
s1.append(s1.end(),"$"); 

ありがとうございました。

+0

...などなど。

std::stringstream ss; ss << "^" << strValue << "$"; std::string strResult = ss.str(); 

...のprintf形式の文字列の形成どのような意味での "ベスト" stringstreamsを使用することができますか?パフォーマンス?明瞭さ? – leftaroundabout

+0

パフォーマンスが本当に良いでしょうCスタイルの手動メモリ割り当てよりも大幅にパフォーマンスが悪いので、間違いなくそれを実行します。 – CodersSC

+0

が、それについて良い方法 '「^」+ strValueに+「$」'少なくともC++ 11(セマンティクスを移動するためのおかげで)で、ない思考はおそらくない@leftaroundaboutすることは明らかだった場合 – leftaroundabout

答えて

7

が、それ以外の場合は大丈夫そうです。

も簡単な方法は、彼らがstl::string::appendoverloadsのいずれかを使用しないよう

s1 = '^' + s1 + '$'; 
+1

+1 charリテラルを扱うために+1 – ipc

2

あなたはそのようにstd::string::append()を使用することはできません:それはinsertいうよりappendだろう

s1.insert(0, "^"); 
s1.append("$"); 
2

はあなたの例では動作しませんでしょう、あなたは新しい文字列を作成することができ、すなわち、個別

を要素を追加します
std::string FormatText(const std::string& rstrInput) 
{ 
    std::string strOutput = "^"; 
    strOutput += rstrInput ; 
    strOutput += "$"; 
    return strOutput; // RVO will eliminate copying 
} 

しかし、これを行う方法の数は、おそらく存在し、添付は、おそらく最も簡単です。

std::string strResult = "^" + strValue + "$"; 

また

+0

彼の可能な意図であった 'insert'の言及はありません。 –

関連する問題