C++资源文件初使用[C++菜鸟]

起因

  项目中需要可能变动的一些映射关系,而且是封装成独立的库——一个dll文件。

思路:把excel文件导出成.csv文件,当作资源加载到项目里,读取后拿到全部的字符,再分割处理。

添加资源

VS2013里添加资源  在所选项目上右键-添加-资源,弹出的窗口里选择-导入,添加我的.csv文件,资源类型是"csv",点击确定。

这时项目里 会有个 resource1.h 文件,里面有类似这样的代码:

#define IDR_CSV1 101
#define IDR_CSV2 102

这里,101 ,102 就是你添加的资源的id。

资源使用

//加载资源
string UseCustomResource(int rcId)
{
    //定位自定义资源,如果是从本模块定位资源,也可将句柄简单地置为NULL即可
    //HMODULE phexmodule = GetModuleHandle(L"PCommServerHandler.dll");
    HMODULE phexmodule = LoadLibrary(L"PCommServerHandler.dll");
    HRSRC hRsrc = FindResource(phexmodule, MAKEINTRESOURCE(rcId), TEXT("csv"));    

    if (NULL == hRsrc)
        return "rcError1";
   //获取资源的大小
   DWORD dwSize = SizeofResource(phexmodule, hRsrc);
    if (0 == dwSize)
        return "rcError2";
    //加载资源
    HGLOBAL hGlobal = LoadResource(phexmodule, hRsrc);
    if (NULL == hGlobal)
        return "rcError3";
    //锁定资源
    LPVOID pBuffer = LockResource(hGlobal);
    if (NULL == pBuffer)
        return "rcError4";

    string  s=(char * &)pBuffer;// LPVOID  ---> String
    s=s.substr(0,dwSize); //去除各种文件的附加信息。
    return s;
}

加载资源,C++

  调用就很简单一句:string fileTxt=UseCustomResource(101);

拿到的文本做进一步分割处理,加载到map里,就可以使用了,over。

读取excel

这里是一个.csv文件的读写,简单明了:   http://blog.csdn.net/zhongjling/article/details/49818151

时间: 2024-07-30 10:26:31

C++资源文件初使用[C++菜鸟]的相关文章

【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OSS(https://www.aliyun.com/product/oss) 4.HTTPS(http://baike.baidu.com/view/14121.htm) 阅读目录结构 引: 一.准备工作 二.整体功能结构 三.具体实现步骤 四.关键点和问题处理 五.延伸与扩展 六.总结与思考 引:

菜鸟教程之工具使用(十九)——国际化资源文件开发凶器MultiProperties

最近要做一个多语言的东西,大概包含中.繁.日.英.韩几种语言.这样一来就需要编写多个资源文件,不仅工作量繁重,而且容易出错.今天介绍一款非常好用的工具给大家--MultiProperties. MultiProperties Editor 是一个用来编辑 properties 或者是 ResouceBundle 资源文件的 Eclipse 插件,支持多语言同时编辑.它的原理流程图如下: MultiProperties文件其实就是对XML的一种封装格式,可以转换成Java的properties文件

Hadoop集群上使用JNI,调用资源文件

hadoop是基于java的数据计算平台,引入第三方库,例如C语言实现的开发包将会大大增强数据分析的效率和能力. 通常在是用一些工具的时候都要用到一些配置文件.资源文件等.接下来,借一个例子来说明hadoop上面如何使用JNI.以及调用资源文件. 首先介绍一下ICTClass,ICTClass是中国科学院开发的一个分词软件(ICTClass官网).该套软件采用C/C++编写.ICTClass虽然支持java,但是必须使用到的JNI技术.因此,在使用ICTClass之前需要配置好JNI资源以及IC

.Net 多语言 与资源文件

目前很多网站都支持多语言,特别是中英文.而.Net网站中的多语言就要用到资源文件.资源文件分为全局资源文件(App_GlobalResource)以及本地资源文件(App_LocalResource). 创建资源文件 对于一个项目,我们一般都会创建全局资源文件以及本地资源文件.我们可以首先新建两个文件夹:App_GlobalResource,App_LocalResource. 1. 创建本地资源文件(App_LocalResource) 本地资源文件是针对于某个页面资源信息.所以,原则上我们应

iOS工程 与 资源文件 和 Bundle

在简单的app中,可能只会用到工程,但是项目越大,越复杂,就会需要拆分项目,将各个功能拆散到各个工程中. 可以使用worksapce来管理工程集合. 但是资源文件却不好管理,因为xcode默认只能添加自己工程内,或者子工程的资源文件到target中. 如果是平级的工程,怎么添加呢?可以使用bundle bundle虽然是os x中的资源类型,但是是兼容iOS的 我们可以先创建一个os x的bundle,然后修改其编译类型为iOS的 调整base sdk即可 然后添加资源文件(png,xib,st

win10 uwp 读取resw资源文件

ResourceContext resourceContext = ResourceContext.GetForViewIndependentUse(); ResourceMap resourceMap = Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap.GetSubtree("my"); // Here you load the resource you need var

Spring boot 国际化自动加载资源文件问题

Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义正确的资源文件路径,Spring boot就启动时就会自动加载资源. spring.messages.basename=i18n/message 但是我的项目修改后获取消息时系统报错,找不到对应语言的资源配置.于是试图找到原因.Google好久都没找到,简直好像就我一个人遇到这鬼问题一样??.只好自

Solidity编程 三 之 资源文件的组成

3.1 版本语句 源文件可以用版本语句拒绝高版本编译器编译.其中一些高版本可能引入了不兼容的特性,导致编译后出现不可预知的结果.我们希望把这种版本变化控制在最小范围内,同时尽量要求语法和语义同步修改,这个要求很难达到.所以,我们需要去阅读每个版本的修改日志,这些版本都是以 0.X.0或是X.0.0来命名. 版本语句使用如下: pragma solidity ^0.4.0; 这样的源文件不会被0.4.0以前的编译器编译,同时在0.5.0版本以上(包括0.5.0)编译器上也不能编译(使用了 ^ 进行

struts2官方 中文教程 系列七:消息资源文件

介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字段标签,并根据用户的语言环境将文本更改为特定的语言. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列七:消息资源文件  即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 信息资源属性文件 在Struts2 we