非常感謝這位博主,轉載地址: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;
}