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;
*/
浙公网安备 33010602011771号