#include <iostream>
#include <string>
#include <curl/curl.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
std::string api_url = "https://fanyi-api.baidu.com/api/trans/vip/translate";
std::string appid = "您的APPID"; // 替换为您的appid
std::string key = "您的密钥"; // 替换为您的密钥
// 设置CURL回调函数
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
std::string translate(const std::string& query, const std::string& from, const std::string& to)
{
CURL* curl;
CURLcode res;
std::string readBuffer;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
std::string data = "q=" + query + "&from=" + from + "&to=" + to + "&appid=" + appid;
std::string salt = "123456"; // 可以随机生成
std::string sign = appid + query + salt + key;
for (int i = 0; i < sign.length(); i++) {
sign[i] = tolower(sign[i]);
}
unsigned int result;
md5_state_t state;
md5_init(&state);
md5_append(&state, (const md5_byte_t*)sign.c_str(), sign.length());
md5_finish(&state, (unsigned char*)&result);
char buffer[33];
sprintf(buffer, "%08x%08x%08x%08x",
result & 0xFFFFFFFF,
(result >> 32) & 0xFFFFFFFF,
(result >> 64) & 0xFFFFFFFF,
(result >> 96) & 0xFFFFFFFF);
sign = buffer;
data += "&salt=" + salt + "&sign=" + sign;
curl_easy_setopt(curl, CURLOPT_URL, api_url.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
// 解析返回的JSON数据
json j = json::parse(readBuffer);
std::string translatedText = j["trans_result"][0]["dst"];
return translatedText;
}
int main()
{
std::string text = "hello world";
std::string translatedText = translate(text, "auto", "zh");
std::cout << "Translated Text: " << translatedText << std::endl;
return 0;
}
(一)使用百度翻译API为例
注册并获取API Key
首先,您需要前往百度AI开放平台(https://ai.baidu.com/),注册一个账号,并创建应用以获得API Key和Secret Key。
安装必要的库
在C++项目中,您需要使用一些网络请求库来发送HTTP请求到百度翻译API,例如libcurl。此外,还需要JSON解析库来处理API返回的数据,例如nlohmann/json。
注意:
上述代码中的md5_state_t等相关MD5加密操作未完整给出,您需要自行补充完整的MD5计算逻辑,或者使用现成的MD5库。
以上代码仅作为演示用途,在实际项目中请严格按照百度翻译API文档说明来进行开发。
由于涉及到网络请求及第三方服务调用,因此建议在互联网连接正常的情况下测试此程序。
(二)关于Dev-C++环境配置
如果您打算在Dev-C++环境中运行上述代码,请确保已经正确安装并配置了libcurl和nlohmann/json这两个库。具体步骤如下:
下载并解压libcurl和nlohmann/json库文件。
将libcurl的头文件路径添加到Dev-C++的“工具”->“编译选项”->“参数”->“#include 搜索路径 (-I)”中;同时将静态库或动态库路径添加到相应的链接器搜索路径中。
对于nlohmann/json,可以直接将其头文件夹复制到项目的根目录下,并通过#include "json.hpp"引入。
三、总结
通过上述方法,您可以实现在Dev-C++环境下利用百度翻译API完成简单的英文转中文或中文转英文功能。当然,这只是一个基础示例,实际应用可能还需要考虑更多细节,如错误处理、多语言支持等。如果您对这段代码有任何疑问,欢迎继续提问!