Title is No Title

not very good here!

导航

How to get a Chinese character's PinYin automaticly?

1:get the file :imegen.exe in computer,and open and create a txt file:WINPY.txt
2:use next code to seek and get.
CString desStr="素";
char pszPathName[]="WINPY.TXT";
 CFile File;
 CStdioFile sFile;
if (!File.Open(pszPathName, CFile::modeRead, NULL)) { 
    AfxMessageBox("can not open");
 return ;
}  
//File.Close();

CString path=File.GetFilePath();
//AfxMessageBox(path);
//UINT num=4;
//char buff[4]="\0";
//File.Seek(0,CFile::begin);
//File.Read(buff,num);
unsigned char ch;
CString str;

int len=File.Read(&ch,1);
int num=0;
//char bffer[100];
//sFile.ReadString(bffer,100);
//sFile.ReadString(str,100);

//now try read one line;

 char buffer[10]="\0";//ten is enoght!
 int i=0;
 int line=0;
 bool find=false;
 
while(!find&&line<60000){

 //at most read 100 char.
 //and len>0 means not end;
 i=0;
 while((ch!=13)&&(ch!=10)&&(i<10)&&(len>0)){
 buffer[i]=ch;
 i++;
 //File.Seek(1,CFile::current);//after read,will auto go.
 len=File.Read(&ch,1);
 if(ch==13||ch==10)
 buffer[i]='\0';
    //break;//out all(this*) while.
    continue;
 }
 //-after this line,we must see if can we find which we want
 CString strBuffer;
 strBuffer.Format("%s",buffer);
 //only find left 2 charecter.
 CString left2=strBuffer.Left(2);
 //AfxMessageBox("left2:"+left2);right!
 //before find,must see the 3rd char as some ziMu.
 char tempC=buffer[2];
 bool isBehand=false;
 if((tempC>=64&&tempC<=90)||tempC>=97&&tempC<=122){
 isBehand=true;
 }
 //see if this Charechter is we look for.
 bool isThis=false;
 if(left2.Compare(desStr)==0){
 isThis=true;
 }
 //this is the right line.
 //return its first charcter.
 if(isThis&&isBehand){
     CString temppC;
  temppC.Format("%c",tempC);
  AfxMessageBox("find char is:"+temppC);
  //return tempC;
  find=true;
 }
 //must next line.
 //try read 2 char \n,\t.
 len=File.Read(&ch,1);
 len=File.Read(&ch,1);
 line++;
}//end while not find
str.Format("%s",buffer);
//another method.
AfxMessageBox(str);
//CString temp;
//temp.Format("%s",buff);
//AfxMessageBox(temp);
File.Close();

return ;
*/ 
/*///addition another method.
while(len!=0&&num<12){
 CString temp;
 CString temp2;
 CString temp3;
    temp.Format("%c",ch);
 temp2.Format("%d",ch);
 temp3.Format("%d",num);
    AfxMessageBox("now num:"+temp3+" char:"+temp+" and ch num:"+temp2);
   str+=ch;
   //处理中文

   if(ch>0x80)//中文
   { CString str1;
 AfxMessageBox("come china.");
 str1+=ch;
 File.Seek(1,CFile::current);  
    len=File.Read(&ch,1);
 str1+=ch;
 AfxMessageBox("have just read china:"+str1);
    if(len!=0)
    {
     str+=ch;
    }
 AfxMessageBox("end  china. and str now:"+str);
   }
  
   //end chinaese
   File.Seek(1,CFile::current);
   len=File.Read(&ch,1);
num++;
}//end while len!=0;
*/

posted on 2004-04-13 13:59  abraham  阅读(1142)  评论(1编辑  收藏  举报