簡體   English   中英

C ++字符串添加

[英]C++ string addition

簡單的問題:如果我有一個字符串,我想添加頭部和尾部字符串(一個在開頭,另一個在結尾),最好的方法是什么? 像這樣的東西:

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

有沒有更好的方法呢?

提前致謝。

如果您擔心效率並希望避免+運營商制作的臨時副本,那么您可以:

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

如果你更關心效率,你可以補充一下

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

在進行插入/追加之前,確保只進行一次重新分配。

但是,您的原始代碼簡單易讀。 有時這比更有效但更難閱讀的解決方案“更好”。

一種完全不同的方法:

#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;
}

這種方法的一個優點是你可以混合運算符<<被重載的任何類型並將它們放入一個字符串中。

  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"

您可以附加尾部然后共同定位字符串,如下所示:

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

在那一點上創建一個新字符串可能會更好。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM