C++(非拖管) 有没有类似C#stringbuilder或者java stringbuffer实现字符快速拼接的类

pcwe2002 2008-07-30 09:22:05
用 + 连接大量字符串太慢了,所以想问问大家都没有类似stringbuilder的类可以用
...全文
621 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2008-07-31
  • 打赏
  • 举报
回复
先调用CString::SetBuffer设置好缓冲区大小,只要不超过这个大小,附加字符串是很快的,因为不涉及到内存的重分配
abomber2 2008-07-31
  • 打赏
  • 举报
回复 1
std::stringstream
Zhang_ZP 2008-07-31
  • 打赏
  • 举报
回复
CString std::string
pcwe2002 2008-07-31
  • 打赏
  • 举报
回复
这样可以实现较少的内存的分配,自已实现一个StringBuilder也好实现,我是想问问有没有现成的类,成熟的类可以使用
pcwe2002 2008-07-31
  • 打赏
  • 举报
回复
用Cstring和std::string时的+号联接N个字符串时,第一个字符串和第二个会被拷备N-1时,第三个会被拷备N-2次...以此类推
CString strText;
for(int i = 1;i <= 10000;++i)
{
strText += "OK";
}
这样连接速度很慢。我想问大家C++中有没有类似stringbuilder的类可以实现像这样

CString strText;
StringBuilder strBuilder;
for(int i = 1;i <= 10000;++i)
{
strBuilder.append("OK");
}
strText =strBuilder.toString();
菜牛 2008-07-31
  • 打赏
  • 举报
回复
要快速自己分配一个大的目标缓冲区,用strcpy/strcat函数拼接,或者memcpy函数,还能更快么?
arong1234 2008-07-30
  • 打赏
  • 举报
回复
VC中的CString和stl::string实际上和java的StringBuild和StringBuffer是完全一样的,不会有CString::operator+效率比stringbuild还低的说法

java中的stringbuild出现只是因为他的string没有动态改变的能力,他的string倒是很快,在VC中没有类似于java中的string对象,只有类似于StringBuild的对象。
jameshooo 2008-07-30
  • 打赏
  • 举报
回复
VS.NET以上版本中CString已经不再属于MFC专用,非MFC也能使用。
如果嫌CString大量+操作太慢,可以预先设置好CString的缓冲区大小,或者自己重载+操作符提高性能。
zaodt 2008-07-30
  • 打赏
  • 举报
回复

MFC

CString



CString str1 = "Tom";
CString str2 = " and ";
CString str3 = "Jerry";

CString str = str1 + str2 + str3;

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧