非常感谢这位博主,转载地址:http://blog.csdn.net/tanlijun37/article/details/6723625
因为要给一个人写个去重的东西,我就想着最方便的原则,没有任何优化就去写了,唯一遇到的麻烦就是unicode 编码的读写问题,c#貌似是默认是 utf-16的,那块的文件操作我没有接触过,然后又想c++写一个,所以就参考了上面的那个博客里面的内容,以下是我的代码。
#include <iostream>
#include <fstream>
#include <cstring>
#include <stdlib.h>
#include <cstdio>
#define SIZE1 50
using namespace std;
wchar_t s[30000][SIZE1];
int main()
{
int i,len;
FILE* file = _wfopen(L"a.txt", L"rb");
FILE* file2 = _wfopen(L"b.txt",L"rb");
FILE* file3 = _wfopen(L"c.txt",L"rb+");
fseek(file,2,0);//这样处理是因为前2个位置是标明是什么编码(查到的资料貌似是这么说滴)
fseek(file2,2,0);
fseek(file3,2,0);//这样最后输出的时候好像会在第一个位置多一个空格
wchar_t line[SIZE1];
i=0;
while(fgetws(line, SIZE1, file) != NULL)
{
wcscpy (s[i++],line);
}
len=i;
while(fgetws(line,SIZE1,file2)!=NULL)
{
for(i=0;i<len;i++)
{
if(wcscmp(line,s[i])==0)
break;
}
if(i==len)
{
fputws(line,file3);
}
}
system("pause");
fclose(file);fclose(file2);fclose(file3);
return 0;
}