菠萝的英文译语怎么说-英语四级听力mp3下载
2023年4月4日发(作者:托福考试)
C
语
言
在
线
翻
译
器
光影
2012年7月8日22:03:22
1
【C语言】【Windows】--在线翻译器
01.程序简介
程序名称:在线翻译器
编译器:vs2010(其它也可以……)
程序大小:109K
文件包括:在线翻译器.exe,,,
程序界面:
2
3
02.任务说明
/********************************************************************
【光影队】【任务】【LV5】在线翻译器
********************************************************************/
任务名称:在线翻译器
任务难度:等级5
任务发布时间:
任务所需知识:C语言界面编程。算法。
任务简介:一个多国语言的在线翻译器。N天前使用学校的电脑,结果鼠标的半
报废的货。使用谷歌翻译的时候需要全部删除输入的内容,结果鼠标选择不了,
只能一个个字符Delete,或者点击打开新的窗口。每次使用翻译都需要这样很麻
烦,突然想要自己写一个翻译器,于是开工了……程序需要可以对常用的几种语
言间进行翻译。
任务资料提示:
可以使用URLDownloadToFile对翻译结果的网页进行下载,然后分析网页即
可得出翻译结果。
URL是:/translate_t?q=要翻译的内容
&hl=zh-CN&langpair=源语言|目标语言
源语言与目标语言可以在谷歌翻译找到,如:en是英语,zh-CN是中文简体
要翻译的内容中的空格用%20代替,换行(rn)用%0A代替。
注意网页中国十大传世名画 是UTF-8编码。
网页打开:
backgroundColor=\'#fff\'\">后面开始是翻译后的内容
后面的内容如果有换行那就带
?和其它……
后面如果没有内容了那就带
具体网页可以自己下载网页进行分析。
/********************************************************************
4
03.相关技术
001.程序界面:
使用对话框。我们按下翻译按钮后。程序得到文本框的内容,然后根据文本的内
容长度与标点符号进行分割,然后将分割的内容与相应的语言选择进行URL构
造。根据构造的URL下载网页。最后分析网页得到翻译后的内容。
5
:
目标URL是:/translate_t?q=要翻译的内容
&hl=zh-CN&langpair=源语言|目标语言
源语言与目标语言可以通过用户的下拉列表(Combobox)选择得到。
如:
中文简体:zh-CN
中文繁体:zh-TW
英语:en
日语:ja
韩语:ko
法语:fr
菲律宾语:tl
越南语:vi
拉丁语:la
更多可以到谷歌翻译上找……
如将“lucifer”以为中文,那么下载的链接就是:
/translate_t?q=lucifer&hl=zh-CN&langpair=en|zh-CN
然后使用:URLDownloadToFile进行下载
URLDownloadToFile(0,下载目标,保存的文件名,0,NULL);
然后就是文件操作了。
6
003.编码
网页文件是使用UTF-8编码,我们直接读取的网页内容然后进行显示的时候就
会发现,英文正常显示,中文全部都变成了乱码。
于是我们需要对其进行编码转换。
我们使用char型的数组buffer进行读取然后在进行一下转换:
//先转换为Unicode
intwLen2=MultiByteToWideChar(CP_UTF8,0,buffer,-1,NULL,0);
wchar_t*wStr2=(wchar_t*)malloc(sizeof(wchar_t)*wLen2);
MultiByteToWideChar(CP_UTF8,0,buffer,-1,wStr2,wLen2);
//再转换为Ascii
intaLen2=WideCharToMultiByte(CP_ACP,0,wStr2,-1,NULL,0,NULL,
NULL);
char*converted2=(char*)malloc(sizeof(char)*aLen2);
WideCharToMultiByte(CP_ACP,0,wStr2,-1,converted2,aLen2,NULL,
NULL);
之后显示的内容就不会是乱码了。于是后续的字符串操作,翻译内容的定位就简
单了……
7
004.检查输入的内容。
input是得到的输入内容。然后检查有没有空格和换行。如果有就进行替换。
空格换成“%20”
换行符换成“%0A”。
大致流程是:
/********************************************************************
替换空格和换行。
接着
我们判断它的大小:
intinputlen=strlen(input);
while(inputlen>500){
截取字符串,进行翻译,得到结果后,继续截取,直到inputlen小于500跳出循
环。
因为太长的URL得不到结果。
}
最后将剩下那段长度小于500的字符串进行翻译并得出结果。
以上完成。
********************************聒噪的拼音 ************************************/
8
005.对于输入需要设计的算法:
a.判断字符串哪些地方存在空格和换行符。
b.将该位置的空格和换行符用相应的字符串进行替换。“%20%0A”
c.字符串从500个字节倒数回来有一些常用结束标点(。,?!等),那就从500
倒数第一个标点开始截取字符串,标点前面的作为翻译的内容,标点后面的
前移,准备下一次截取。
d.如果前500个字符没有这些标点(如有些诗歌压根没有标点),那就从第500
个字符开始截取,前面的进行翻译,后面的前移,准备下一次截取。
e.从字符串input里面的从头开始截取index个字符放入NowTochange里面,然
后字符串input从index位置后面的字符全部前移。
f.检查输入内容的末端,如果有换行符,那就换成空格。
9
006.检查输出的内容
对于截取到的翻译内容,我们还不可以直接显示出来。还要将其中的特殊字符串
替换成字符。
如“"”是双引号。“'”是单引号。“<”是“<”。“>”是“>”.
还有特殊的空格符(如全角),读取的时候为“
?”或“
??”等。
这些都需要找出来进行替换。
007.定位翻译结果。
判断开始位置:
从头开始扫描,直到出现=\'#fff\'\">这段为止。就是开始出现翻译内容的位置
/********************************************************************
while(n
if((buffer[n]==\'=\')&&(buffer[n+1]==\'\'\')&&(buffer[n+2]==\'#\')&&(buffer[n+3]==\'
f\')&&(buffer[n+4]==\'f\')&&(buffer[n+5]==\'f\')&&(buffer[n+6]==\'\'\')&&(buffer[n+7]=
=\'\"\')&&(buffer[n+8]==\'>\'))
{
Begin=n+9;
break;
}
n++;
}
********************************************************************/
10
判断结束位置。
/********************************************************************
while(n
if((buffer[n]==\'<\')&&(buffer[n+1]==\'b\')&&(buffer[n+2]==\'r\')&&(buffer[n+3]==\'
>\')&&(buffer[n+4]==\'<\')&&(buffer[n+5]==\'b\')&&(buffer[n+6]==\'r\')&&(buffer[n+7]
==\'>\')&&(buffer[n+8]==\'<\'))
{
End=n;
break;
}
if((buffer[n]==\'<\')&&(buffer[n+1]==\'/\')&&(buffer[n+2]==\'s\')&&(buffer[n+3]==\'
p\')&&(buffer[n+4]==\'a\')&&(buffer[n+5]==\'n\')&&(buffer[n+6]==\'>\')&&(buffer[n+7]
==\'<\')&&(buffer[n+8]==\'s\'))
{
End=n;
break;
}
i自惭形秽的拼音 f((buffer[n]==\'<\')&&(buffer[n+1]==\'/\')&&(buffer[n+2]==\'s\')&&(buffer[n+3]==\'
p\')&&(buffer[n+4]==\'a\')&&(buffer[n+5]==\'n\')&&(buffer[n+6]==\'>\')&&(buffer[n+7]
==\'<\')&&(buffer[n+8]==\'/\')&&
(buffer[n+9]==\'s\'))
{
End=n;
t=NextLine+1;
break;
}
n++;
}
********************************************************************/
11
这一行翻译结束:
<
下一行翻译开始:
最后一行翻译结束:
发布评论