求 c/c++ 中的 stream

xiehuanxie 2009-12-22 03:37:58
我是用C#的, c/c++ 完全新手。

最近想实现一个功能, 我有不定个数unsigned char * 指针, 并且知道长度。
我想用一个类似stream 的东西把这些拼起来, 返回一个unsigned char * 跟拼接后的长度。

我了解一点的只有file stream跟fwrite 方法, 但是我只想在内存中操作。
这个有办法实现吗?
...全文
141 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DLevel 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xiehuanxie 的回复:]
我理一理问题,

1. 我不想用managed code, 因为我拿到的是指针, 我不想再转成数组再转回指针。
2. 我不想分配内存, 因为不知道结果到底是多长。
[/Quote]
1.没有什么转换和不转换,不用managed code stringstream看看吧
2.你还是用string吧,这东西看起来不用分配内存。
fenglingxiaowu 2009-12-22
  • 打赏
  • 举报
回复
Up
xiehuanxie 2009-12-22
  • 打赏
  • 举报
回复
我理一理问题,

1. 我不想用managed code, 因为我拿到的是指针, 我不想再转成数组再转回指针。
2. 我不想分配内存, 因为不知道结果到底是多长。
DLevel 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 do_fork 的回复:]
http://www.google.com/search?q=stringstream&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
[/Quote]
哈,忘记还有个stringstream了,不过,这在C#里面应该有啊。
DLevel 2009-12-22
  • 打赏
  • 举报
回复
老写错,strcat不行的话,自己写代码呗。我这个貌似就可以吧。。,只不过,忘记写调用了
DLevel 2009-12-22
  • 打赏
  • 举报
回复
typedef unsigned char mychar;
mychar *mycat(mychar *dest,const mychar*source)
{
assert((dest!=0)&&source!=0);
mychar *temp =dest+ strlen(dest);
while((*temp++=*source++)!='\0');
return dest;
}
int main(int argc, char *argv[])
{
mychar *test= new mychar [100];
mychar a[]="i love you";
mychar b[]="helloword";

::printf("%s",test);
system("PAUSE");
return 0;
}
DLevel 2009-12-22
  • 打赏
  • 举报
回复
mychar *mycat(mychar *dest,const mychar*source)
{
assert((dest!=0)&&source!=0);
mychar *temp =dest+ strlen(dest);
while((*temp++=*source++)!='\0');
return dest;
}
int main(int argc, char *argv[])
{
mychar *test= new mychar [100];
mychar a[]="i love you";
mychar b[]="helloword";

::printf("%s",test);
system("PAUSE");
return 0;
}
xiehuanxie 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiehuanxie 的回复:]
引用 2 楼 dlevel 的回复:
strcat()不行么?


我看了一下这个方法好像得不到实际长度。
[/Quote]

好像长度可以自己算, 汗一个。
xiehuanxie 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dlevel 的回复:]
strcat()不行么?
[/Quote]

我看了一下这个方法好像得不到实际长度。
xiehuanxie 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 freezezdj 的回复:]
unsigned char * 可以用string代替。
不代替,用string中转也不错。
实现你要的功能就非常简单了。
[/Quote]

感觉比较别扭, 因为其实是一个Byte数组, 并且长度比较大。
DLevel 2009-12-22
  • 打赏
  • 举报
回复
strcat()不行么?
冻结 2009-12-22
  • 打赏
  • 举报
回复
unsigned char * 可以用string代替。
不代替,用string中转也不错。
实现你要的功能就非常简单了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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