如何传递参数?

xyzlxw 2003-08-25 01:12:02
我初学STL,不知如何使用,请指教。
void f(char *buf,int len){}
vector<char> x;
下面的使用方法对吗?
f(&x,x.size());



...全文
27 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzlxw 2003-08-26
  • 打赏
  • 举报
回复

Neptune2003(海王星):多谢,方法可以,但看起来的确不太好看。
会不会还有更好的方法?这样强制操作vector缓冲区会不会有问题?

我原本打算写法如下,代码过于冗余。
char *p = new char[100];
f(p,100);
vector<char> vec(p,p_100);
...
delete []p;


Wolf0403 2003-08-26
  • 打赏
  • 举报
回复
void f(char *buf,int len){}

char *str = "Hello, world";
f(str, strlen(str));

如果 buf 是作为输出,那么

char * pBuffer = new char[1024];//这里申请足够大的缓冲区。最好接着初始化一下
pBuffer = "";
f(pBuffer, n);
Neptune2003 2003-08-26
  • 打赏
  • 举报
回复
这样把,f(&(*x.begin()),x.size()),不好看,但应该可以.
xyzlxw 2003-08-26
  • 打赏
  • 举报
回复
up
xyzlxw 2003-08-25
  • 打赏
  • 举报
回复
函数不能改变的,比如操作文件的ReadFile()函数,需要传入一个缓冲区。
BOOL ReadFile(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // number of bytes read
LPOVERLAPPED lpOverlapped // overlapped buffer
);



Neptune2003 2003-08-25
  • 打赏
  • 举报
回复
对不起,我搞错了(传的不是引用),我想是把void f(vector& x,int len);可否?
xyzlxw 2003-08-25
  • 打赏
  • 举报
回复
那应该怎样用,请讲的具体一些。因为很多函数使用的参数就是指针,但我要使用vector代替array时,如何传递参数。
Neptune2003 2003-08-25
  • 打赏
  • 举报
回复
传x的引用是不对的,向量和字符指针不可混为一谈

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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