[英]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.