C++获取URL中的参数值并修改

获取URL中的参数值

WebUrl.h文件

#pragma once
#ifndef WEB_URL_H_
#define WEB_URL_H_

#include <regex>
#include<string>
using namespace std;

namespace crystal {
	class WebUrl {
	public:
		WebUrl(const string& url) :_url(url) {}
		WebUrl(string&& url) :_url(move(url)) {}

		string Request(const string& request) const;
	private:
		string _url;
	};
}

#endif

WebUrl.cpp文件

#include "WebUrl.h"

namespace crystal {
	string WebUrl::Request(const string& request) const {
		smatch result;
		if (regex_search(_url.cbegin(), _url.cend(), result, regex(request + "=(.*?)&"))) {
			//匹配具有多个参数的url

			//*? 重复任意次,但尽可能少重复
			return result[1];
		}
		else if (regex_search(_url.cbegin(), _url.cend(), result, regex(request + "=(.*)"))) {
			//匹配只有一个参数的url

			return result[1];
		}
		else {
			//不含参数或制定参数不存在

			return string();
		}
	}
}

参考:https://blog.csdn.net/u014421422/article/details/121589144

修改url中参数的值

string m_replace(string strSrc, const string& oldStr, const string& newStr, int count = -1) {
	string strRet = strSrc;
	size_t pos = 0;
	int l_count = 0;
	if (-1 == count) {//replace all
		count = strRet.size();
	}
	while ((pos = strRet.find(oldStr, pos)) != string::npos) {
		strRet.replace(pos, oldStr.size(), newStr);
		if (++l_count >= count) break;
		pos += newStr.size();
	}
	return strRet;
}

参考:https://www.cnblogs.com/yuxuan-light-of-Taihu-Lake/p/15582474.html

在main中测试

#include <iostream>
#include "WebUrl.h"
using namespace std;
using namespace crystal;

int main(){
	//获取参数
	string url = "www.qqq.com/index.html?dateType=1&fileType=1&filePath=vfzs55&fileId=164&extension=7z&cardNo=111111111111111111&key=zapooi";
	WebUrl web(url);
	string oldNo = web.Request("cardNo");
	string newNo = "888888888888888888";
	//替换参数
	string newURL = m_replace(url,cardNo,newNo);
	cout << newURL << endl;//输出内容为:www.qqq.com/index.html?dateType=1&fileType=1&filePath=vfzs55&fileId=164&extension=7z&cardNo=888888888888888888&key=zapooi
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++,你可以使用第三方库来进行HTTP请求和图片保存。一个常用的库是cURL库,它提供了HTTP请求的功能。以下是一个使用cURL获取图片并保存的示例代码: ```cpp #include <iostream> #include <fstream> #include <curl/curl.h> // 回调函数,用于将获取到的图片数据写入文件 size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) { std::ofstream* file = static_cast<std::ofstream*>(userp); file->write(static_cast<char*>(contents), size * nmemb); return size * nmemb; } int main() { CURL* curl; CURLcode res; // 初始化cURL curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { // 设置要请求的图片URL const char* url = "https://example.com/image.jpg"; // 打开文件以保存图片数据 std::ofstream file("image.jpg", std::ios::binary); // 设置cURL选项 curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &file); // 执行HTTP请求 res = curl_easy_perform(curl); // 检查是否请求成功 if (res != CURLE_OK) { std::cerr << "Failed to download image: " << curl_easy_strerror(res) << std::endl; } // 关闭文件 file.close(); // 清理cURL资源 curl_easy_cleanup(curl); } // 清理cURL全局资源 curl_global_cleanup(); return 0; } ``` 上述代码使用cURL库发送GET请求,并将获取到的图片数据写入到名为"image.jpg"的文件。你可以根据需要修改保存的文件名和路径。 请确保你已经安装了cURL库,并在编译时链接相应的库文件。编译时需要添加"-lcurl"参数,例如: ``` g++ main.cpp -o main -lcurl ``` 这样就可以编译并运行上述代码来获取并保存图片数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值