C ++字符串添加

时间:2009-08-16 00:41:42

标签: c++ string insert addition

简单问题: 如果我有一个字符串,我想添加头部和尾部字符串(一个在开头,另一个在结尾),那么最好的方法是什么? 像这样:

std::string tmpstr("some string here");
std::string head("head");
std::string tail("tail");
tmpstr = head + tmpstr + tail;

有没有更好的方法呢?

提前致谢。

3 个答案:

答案 0 :(得分:21)

如果您担心效率并希望避免+运营商制作的临时副本,那么您可以这样做:

tmpstr.insert(0, head);
tmpstr.append(tail);

如果您更关心效率,可以添加

tmpstr.reserve(head.size() + tmpstr.size() + tail.size());

在执行插入/追加之前,确保只进行一次重新分配。

但是,您的原始代码简单易读。有时,这比更有效但更难阅读的解决方案“更好”。

答案 1 :(得分:1)

一种完全不同的方法:

#include <iostream>
#include <string>
#include <sstream>

int
main()
{
  std::string tmpstr("some string here");
  std::ostringstream out;
  out << head << tmpstr << tail;
  tmpstr = out.str(); // "headsome string heretail"

  return 0;
}

这种方法的一个优点是你可以混合任何类型的运算符&lt;&lt;重载并将它们放入一个字符串中。

  std::string tmpstr("some string here");
  std::ostringstream out;
  int head = tmpstr.length();
  char sep = ',';
  out << head << sep << tmpstr;
  tmpstr = out.str(); // "16,some string here"

答案 2 :(得分:-1)

您可以附加尾部然后连接字符串,如下所示:

tmpstr.append(tail);
tmpstr = head + tmpstr; 

在那一点上创建一个新字符串可能会更好。

std::string finalstr(head.length() + tmpstr.length() + 1);
finalstr = head + tmpstr;