【www.gdgbn.com--php应用】
// Pipe KWIC.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include <iostream>
#include
#include
#include
#include
using namespace std;
vector
HANDLE zwMutex=CreateMutex( //建立临界区
NULL, // default security attributes
FALSE, // initially not owned
NULL);;
void swap(vector
int comp( string a, string b) ;
void qsort(vector
int partition(vector
DWORD WINAPI ShiftThread(LPVOID );//shift线程
int _tmain(int argc, _TCHAR* argv[])
...{
fstream inf("C:in.txt",ios::in);//输入为C:in.txt
if(!inf)
...{
cerr<<"C:in.txt不能打开"<
}
char *read=new char[512];//readbuffer
HANDLE hThread;
DWORD dwThreadId;
vector
while(inf.getline(read,512)) //按行读取数据
...{
hThread=CreateThread(NULL,0, ShiftThread,(LPVOID)read,0,&dwThreadId); //启动线程,移位
if(hThread==NULL)
...{
cout<<"CreateThread() failed: "<
}
vHANDLE.push_back(hThread);
read=new char[512];
}
for(int i=0;i
WaitForSingleObject(vHANDLE[i],INFINITE);
}
qsort(out,0,out.size()-1);//数据都到达后,开始排序
inf.close();
fstream outf("C:out.txt",ios::out);//输出为C:out.txt
if(!outf)
...{
cerr<<"C:out.txt不能打开"<
}
for(int i=0;i
}
void qsort(vector
...{
if(j<=i)
return;
int pivotindex=(i+j)/2;
swap(A,pivotindex,j);
int k=partition(A,i-1,j,A[j]);
swap(A,k,j);
qsort(A,i,k-1);
qsort(A,k+1,j);
}
int partition(vector
...{
do
...{
while(comp(A[++l],pivot)<0);
while((r!=0)&&comp(A[--r],pivot)>0);
swap(A,l,r);
}while(l
return l;
}
int comp(string a, string b)
...{
for(int i=0;i
if(a.at(i)>=65&&a.at(i)<=90)
a.at(i)=a.at(i)+32;
}
for(int i=0;i
if(b.at(i)>=65&&b.at(i)<=90)
b.at(i)=b.at(i)+32;
}
return a.compare(b);
//如果a>b返回正数,如果a}
void swap(vector
...{
string temp=A[i];
A[i]=A[j];
A[j]=temp;
}
DWORD WINAPI ShiftThread(LPVOID lpParam)
...{
string read=(char *)lpParam;
delete lpParam;
vector
int i=0;
string str="";
while(read[i]!=""