用c++写一个代码根据输入的基因名字从ENA官网上下载对应的Project号并输出为txt文件
以下是一个使用C++编写的代码示例,用于根据输入的基因名从ENA官网下载对应的Project号,并将结果输出为txt文件。
#include <iostream>
#include <fstream>
#include <string>
#include <curl/curl.h>
// 回调函数,用于处理下载的数据
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {
size_t totalSize = size * nmemb;
output->append((char*)contents, totalSize);
return totalSize;
}
// 根据基因名从ENA官网获取Project号
std::string getProjectNumber(const std::string& geneName) {
std::string url = "https://www.ebi.ac.uk/ena/data/search?query=" + geneName;
std::string response;
CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
CURLcode res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res != CURLE_OK) {
std::cerr << "Failed to download data from ENA." << std::endl;
return "";
}
} else {
std::cerr << "Failed to initialize CURL." << std::endl;
return "";
}
// 从下载的数据中提取Project号
size_t startPos = response.find("studyId\":\"");
if (startPos == std::string::npos) {
std::cerr << "Failed to find Project number in the response." << std::endl;
return "";
}
startPos += 10;
size_t endPos = response.find("\"", startPos);
if (endPos == std::string::npos) {
std::cerr << "Failed to find Project number in the response." << std::endl;
return "";
}
return response.substr(startPos, endPos - startPos);
}
int main() {
std::string geneName;
std::cout << "Enter gene name: ";
std::cin >> geneName;
std::string projectNumber = getProjectNumber(geneName);
if (!projectNumber.empty()) {
std::ofstream outputFile("project_number.txt");
if (outputFile.is_open()) {
outputFile << projectNumber;
outputFile.close();
std::cout << "Project number saved to project_number.txt" << std::endl;
} else {
std::cerr << "Failed to open output file." << std::endl;
}
}
return 0;
}
请确保已安装libcurl库,并在编译时链接该库。编译命令可以使用以下命令:
g++ -o download_project_number download_project_number.cpp -lcurl
运行程序后,将提示输入基因名字。程序将从ENA官网下载对应的Project号,并将结果保存在名为"project_number.txt"的文本文件中。
原文地址: https://www.cveoy.top/t/topic/ini5 著作权归作者所有。请勿转载和采集!