C++中多个string连接

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:33:07
最近做个项目遇上这么个问题,因为数据上传格式是通过XML流,所以就有很多string类型的数据连接,这样导致数据打包很慢。各位有啥办法解决的不?
举个简单的例子
string str("");
for(int i=0; i<10000; i++)
str += IntToStr(i);

如此累计下去,程序就会变得很慢!我想解决这个问题!
当然实际情况比这个要复杂,大概的意思就是这样。

申请数组不现实,因为长度不定且比较大!

建议用字符流,因为有模仿文件的缓冲处理,所以在这种连接上的流写入效率会有比较大的改善(当然是相对直接 operator + 而言),但我不知道我是不是真的了解楼主的意思,希望楼主也补充完整:

使用方法示例(我没有编译执行过,但大致是这样,建议仔细查查STL文档):

#include <sstream>
using namespace std;

int main() {
string buf;
ostringstream os;
while(getline(cin, buf)) {
os << buf << endl;
}
cout << os.str() << endl;
}

或者这个会适合你的需要。。
如果感觉我这个不是你想要的,希望补充,继续讨论,谢谢。

stirng类中定义了insert函数,用于在string对象中插入新元素。还有append函数,用于添加字符。
或者像操作vector字符数组那样:
vector<char> str;
for(int i=0; i<10000; i++)
{
//操作。
str.push_back(c);//添加新元素
}

但是刚才试了一下,在你的for循环增大千万量级的时候,明显感觉到使用ostringstream更快一些,如果所以建议你用字符流来处理。

在长度不定且比较大的情况下,建议你用CString.
CString开始的时候就会分配一块足够大的内存空间,
当空间不够时,再次申请的时候申请的量是成倍的。
而string则不具备这样的特性。

那就不用string了。
可以先申请一大块char数组空间,
然后依次往里面复制各个串,strcpy或则memcpy。
注意一下字符串末尾的\0。