关于函数参数中有指针无法带出地址

来源:互联网 发布:软件系统演示平台 编辑:程序博客网 时间:2024/05/19 03:29

本人菜鸟一只,写了一个读入全部文件的函数,接口一直有问题,代码如下:

int ReadAllFile(wstring sfilepath, WCHAR*sfile,int mod){wifstream file(sfilepath.c_str(), std::wifstream::binary);WCHAR*szencr;if (file){// Calculate the file's size, and allocate a buffer of that size.file.seekg(0, file.end);const int file_size = file.tellg();if (file_size > (1024 * 10000)){file.close();//delete szencr;return -1;}// Read the entire file into the buffer.file.seekg(0, file.beg);szencr = new WCHAR[file_size + 1];memset(szencr, 0, file_size + 1);//szencr = file.rdbuf();file.read(szencr, file_size);//file.getline(szencr, file_size);file.close();sfile = szencr;//希望传出地址return 0;}else{return -1;}}

但是这样出来的sfile 一直为null,一直以为sfile 就是个地址,我传的地址进去,就应该能带出地址,实际上是不行的,应该将参数改成如下:

int CSkfControl::ReadAllFile(wstring sfilepath, WCHAR*&sfile,int mod)//引用传递,不是引用的话,值传递,一直不知道指针也是可以引用传递的。。。。。太菜了{wifstream file(sfilepath.c_str(), std::wifstream::binary);WCHAR*szencr;if (file){// Calculate the file's size, and allocate a buffer of that size.file.seekg(0, file.end);const int file_size = file.tellg();if (file_size > (1024 * 10000)){file.close();//delete szencr;return -1;}// Read the entire file into the buffer.file.seekg(0, file.beg);szencr = new WCHAR[file_size + 1];memset(szencr, 0, file_size + 1);//szencr = file.rdbuf();file.read(szencr, file_size);//file.getline(szencr, file_size);file.close();sfile = szencr;return 0;}else{return -1;}}


0 0
原创粉丝点击