您当前的位置: 首页 >  json

插件开发

暂无认证

  • 4浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Win32-C++-系统路径-桌面路径-简单字符串数据-json序列化和反序列化-map对象转json-jsoncpp

插件开发 发布时间:2022-07-04 09:21:10 ,浏览量:4

文章目录
    • 1.获取桌面
    • 2.jsoncpp
  在应用程序编程中,有时需要选择桌面文件夹的路径,这时可以通过win32提供的api来获取,源代码如下所示:

1.获取桌面
#include     
#include  
#pragma   comment(lib,   "shell32.lib")  

std::string GetDesktopFolder()
{
	char path[255];
	SHGetSpecialFolderPath(0, path, CSIDL_DESKTOPDIRECTORY, 0);

	std::string rlt=path;
	return rlt;
}
2.jsoncpp

  在C++编码中,需要根据参数进行数据处理时,经常遇到的一个问题就是需要将关键的内存类属性数据转为文件保存,方便下次加载使用。使用jsoncpp开源库,下文展示一个范例代码,源代码如下所示:

#include 
#include 
#include 
#include 
#include 

//加载文档
void ACustomDocumentInfo::LoadDocumentParaInfo(std::string filename)
{
	// 打开文件
	std::ifstream ifs(filename, std::ios::binary);
	if (!ifs.good())
	{
		return;
	}

	//读取信息
	Json::Value root;
	Json::Reader reader;
	if (!reader.parse(ifs, root)) {
		return;
	}

	//转换信息
	int sz = root.size();
	for (int i = 0; i SetContentByJson(property.toStyledString());

			m_ANormalLabelSizeMap[layer_name]=pANormalLabelSize;
		}
	}
}

void ACustomDocumentInfo::SaveDocumentParaInfo(std::string filename)
{
	//打开文件
	std::ofstream ofs(filename, std::ios::binary | std::ios_base::out | std::ios_base::trunc);
	if (!ofs.good())
	{
		return;
	}

	//将map信息转为json
	Json::Value root;
	std::map::iterator it=m_ANormalLabelSizeMap.begin();
	for (;it!=m_ANormalLabelSizeMap.end();it++)
	{
		//保存图层名
		Json::Value jObject;
		jObject["layer_name"]=it->first;
		std::string json_str=it->second->GetContentByJson();

		//常规尺寸标注
		jObject["layer_type"]="normal_label_size";

		//保存正常尺寸数据
		Json::Reader reader;
		Json::Value value;
		if (reader.parse(json_str, value))
		{
			jObject["obj_property"]=value;
		}

		root.append(jObject);
	}

	ofssecond;
	}
	return jObject.toStyledString();
}

static std::string itoa_self(int i)
{
	std::stringstream ss;
	ss             
关注
打赏
1665481431
查看更多评论
0.1094s