作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-22 14:56
tags:
-
2021年2月22日发(作者:分享者)
C
语
言
在
线
翻
译
器
光影
2012
年
7
月
8
日
22:03:22
【
C
语言】
【
Windows
】
--
在线
翻译器
01.
程序简介
程序名称:在线翻译器
编译器:
vs2010
(其它也可以
……
)
程序大小:
109K
文件包括:在线翻译器
.exe,
,,
程序界面:
1
2
02.
任务说明
/***********************************************
*********************
【光影队】
【任务】
【
LV5
】在线翻译器
*******
**************************************************
***********/
任务名称:在线翻译器
任务难度:等级
5
任务发布时间:
任务所需知识:
p>
C
语言界面编程。算法。
任务简介:一个多国语言的在线翻
译器。
N
天前使用学校的电脑,结果鼠标的半
<
br>报废的货。使用谷歌翻译的时候需要全部删除输入的内容,结果鼠标选择不了,
只
能一个个字符
Delete
,或者点击打开新的窗口。每次使用
翻译都需要这样很麻
烦,
突然想要自己写一个翻译器,
于是开工了??程序需要可以对常用的几种语
言间进行翻译。
<
p>
任务资料提示:
<
br>·可以使用
URLDownloadToFile
对翻译
结果的网页进行下载,然后分析网页即
可得出翻译结果。
p>
·
URL
是
:
p>
/translate_t?q=
要
翻
p>
译
的
内
容
&hl=zh-CN&langpair=
源语言
|
目标语言
·源语言与目标语言可
以在谷歌翻译找到,如:
en
是英语,
zh-CN
是中文简体
·要翻译的内
容中的空格用
%20
代替,换行(
rn
)用
%0A
代替。
·注意网页是
UTF-8
编码。
·网页打开:
backgroundColor='#fff'
后面开始是翻译后的内容
后面的内容如果有换行那就带
?
和其它??
后面如果没有内容了
那就带
·具体网页可以自己下载网页进行分析。
/**
**************************************************
****************
3
03.
相关技术
001.
程序界面:
使用对话框。我们按下翻译按钮后。
程序得到文本框的内容,
然后根据文本的内
容长度与标点符号进
行分割,然后将分割的内容与相应的语言选择进行
URL
构
p>
造。根据构造的
URL
下载网页。最后分析
网页得到翻译后的内容。
4
:
目
标
URL
是
:
/translate_t?q=
要
翻
译
的
p>
内
容
&hl=zh-CN&langpai
r=
源语言
|
目标语言
源语言与目标语言可以通过用户的下拉列表(
p>
Combobox
)选择得到。
如:
中文简体:
zh-CN
中文繁体:
zh-TW
英语:
en
日语:
ja
韩语:
ko
法语:
fr
菲律宾语:
tl
越南语:
vi
拉丁语:
la
更多可以到谷歌翻译上找??
如将“
lucifer
”以为中文,那么下载的链接就是:
<
p>
/translate_t?q=lucifer&hl=zh-
CN&langpair=en|zh-CN
<
p>
然后使用:
URLDownloadToFile
进行下载
URLDownload
ToFile
(
0
,下载目标,保存的
文件名,
0
,
NULL
)
;
然后就是文件操作了。
5
003.
编码
网页文件是使用
UTF-8
编码,我们直接读取的网页内容然后进行显示的时候就
会发现,英文正常
显示,中文全部都变成了乱码。
于是我们需要对其进行编码转换。
我们使用
char
型的数组
<
p>
buffer
进行读取然后在进行一下转换:
//
先转换为
Unicode
int wLen2 =
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
int
aLen2
=
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);
之后显
示的内容就不会是乱码了。
于是后续的字符串操作,
翻译内容的
定位就简
单了??
6
004.
检查输入的内容。
input
是得到的输入内容。然后
检查有没有空格和换行。如果有就进行替换。
空格换成“
%20
<
br>”
换行符换成
“
%0A
”
。
大致流程是:
/**************
**************************************************
****
替换空格和换行。
接着
我们判断它的大小:
int
inputlen=strlen(input);
while(inputlen>500){
截取字符串,进行翻译,得到结果后,继续截取,直到
inputlen
小于
500
跳出循
环。
因为太长的
p>
URL
得不到结果。
}
<
/p>
最后将剩下那段长度小于
500
的字符串
进行翻译并得出结果。
以上完成。
*************************************************
*******************/
7