c++ 宽字符文件的拷贝

  • copy2.h
#ifndef _COPY2_H_
#define _COPY2_H_

#include <iostream>
#include <string>

using namespace std;

#define MAX_COPY_SIZE 4096 * 32

extern "C"
{
	/*
	* file_copy:   Îļþ¿½±´º¯Êý
	* srcFilePath: Ô´Îļþ·¾¶
	* dstPath:     Ä¿±ê·¾¶
	* return:      ÕýÈ··µ»Ø0£¬ ´íÎó·µ»Ø -1
	*/
	int file_copy(const wstring srcPath, const wstring dstPath);

	long long getcopysize();

	int setcopysize();
}

#endif
  • copy
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>

#include "copy2.h"

static long long copiedSize = 0;

extern "C"
{
	int file_copy(const wstring srcPath, const wstring dstPath)
	{
		wifstream src_file;
		wofstream dst_file;

		src_file.open(srcPath, ios::in | ios::binary);
		dst_file.open(dstPath, ios::out | ios::trunc | ios::binary);

		if (src_file.is_open() != true || dst_file.is_open() != true)
		{
			wcout << L"open " << srcPath << L" or " << dstPath << L" is err " << std::endl;
			return -1;
		}

		src_file.seekg(0, ios::beg);

		wchar_t copyBuffer[MAX_COPY_SIZE];
		streamsize count = 0;
		while (!src_file.eof())
		{
			src_file.read(copyBuffer, MAX_COPY_SIZE);
			count = src_file.gcount();
			dst_file.write(copyBuffer, count);
			copiedSize += count;
		}

		src_file.close();
		dst_file.close();

		return 0;
	}

	long long getcopysize()
	{
		return copiedSize;
	}

	int setcopysize()
	{
		copiedSize = 0;

		return 0;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值