求一个字符串转数组或者对象的函数

chinalini 2018-04-04 08:26:49
.

这是一个mfc应用程序

字符串栗子如下:




char * cc = "H=153004;P=0;JOB=180573866;ID=2;DIFF=0.00327355;N=0x1b27027;FROM=0xbef7d7;SCANTO=0x8806087;COUNT=0x7c168b0;"






这属于是要随时更新的字符串 格式不会变 等号签名的不会变,等号后面的会变,

能否让他 H 成为其键名 153004成为值 给一个方便的调用函数 谢谢诸位csdn大神





.
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wallesyoyo 2018-04-08
  • 打赏
  • 举报
回复


#include <vector>
#include <string>
#include <map>

template <typename Container>
Container& split(Container& result, 
	const typename Container::value_type& s, 
	const typename Container::value_type& delimiters)
{
	result.clear();
	size_t current;
	size_t next = -1;
	do
	{
		current = next + 1;
		next = s.find_first_of(delimiters, current);
		result.push_back(s.substr(current, next - current));
	} while (next != Container::value_type::npos);
	return result;
}

void StringToMap(std::map<std::string, std::string>& result, const std::string& s)
{
	result.clear();

	std::vector<std::string> fields;
	std::vector<std::string> keyvals;

	split(fields, s, ";");

	for (auto f : fields)
	{
		if (!f.empty())
		{
			split(keyvals, f, "=");
			if (!keyvals.empty() && keyvals.size() == 2)
			{
				result[keyvals[0]] = keyvals[1];
			}
		}
	}
}

int main()
{
	char * cc = "H=153004;P=0;JOB=180573866;ID=2;DIFF=0.00327355;N=0x1b27027;FROM=0xbef7d7;SCANTO=0x8806087;COUNT=0x7c168b0;";
	std::map<std::string, std::string> m;

	StringToMap(m, cc);

	return 0;
}

这个是把你所列字符串转到map里面的函数,键和值都是字符串类型,不知道是不是你需要的。
jiht594 2018-04-08
  • 打赏
  • 举报
回复
引用 5 楼 jiht594 的回复:
[quote=引用 3 楼 chinalini 的回复:] 一个这样的问题就难道了 csdn?
激将法还是没礼貌? 区区一个scanf、自己去看。[/quote] sscanf
jiht594 2018-04-08
  • 打赏
  • 举报
回复
引用 3 楼 chinalini 的回复:
一个这样的问题就难道了 csdn?
激将法还是没礼貌? 区区一个scanf、自己去看。
真相重于对错 2018-04-05
  • 打赏
  • 举报
回复
百度查询序列化,c++本身不提供这样的功能
chinalini 2018-04-04
  • 打赏
  • 举报
回复
一个这样的问题就难道了 csdn?
chinalini 2018-04-04
  • 打赏
  • 举报
回复
1楼能说具体点么? 比如创建了然后呢 怎么让他们赋值进去呢?
百合杰 2018-04-04
  • 打赏
  • 举报
回复
创建变量H、P、JOB等

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧