2012-03-21 167 views
1

我想在字符串的开始处添加^,并在末尾添加$C++在开始处和结尾处添加字符串

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

是最好的使用方法吗?

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

感谢您的帮助。

+0

“最佳”?性能?清晰? – leftaroundabout 2012-03-21 11:43:44

+0

如果很清楚@leftaroundabout – CodersSC 2012-03-21 11:44:44

+0

的性能真的会很好,至少在C++ 11中(感谢移动语义),思考它,'^“+ strValue +”$“'的好方法可能不会甚至比C型手动内存分配的性能明显更差,所以我肯定会这样做。 – leftaroundabout 2012-03-21 11:50:42

回答

7

这将是insert而非append,但除此之外,它似乎确定。

一个更简单的方法是

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

用于处理char文字的+1 – ipc 2012-03-21 11:52:04

2

你的例子是行不通的,因为他们没有使用任何的stl::string::appendoverloads,您可以创建一个新的字符串和单独添加的元素,即

std::string FormatText(const std::string& rstrInput) 
{ 
    std::string strOutput = "^"; 
    strOutput += rstrInput ; 
    strOutput += "$"; 
    return strOutput; // RVO will eliminate copying 
} 

但是可能有很多方法可以做到这一点,追加可能是最简单的。

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

你也可以使用stringstreams ..

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

... printf类型串成形等等等等。在何种意义上

+0

什么都没有提及他可能的意图的“insert”? – 2012-03-21 21:34:34

相关问题