cocos2d-x:读取指定文件夹下的文件名称+解决中文乱码(win32下有效)
2017-06-06 16:14
423 查看
援引:http://blog.csdn.net/zhanghefu/article/details/21284323
http://blog.csdn.net/cxf7394373/article/details/7195661
先看一下用法:
别忘了引入头文件。 这里我是得到 UserDatas 文件夹下的全部 .json 文件的名字 并转成UTF-8
MyFileUtils.h 文件,直接在.h文件里实现 功能:读取指定文件夹下的文件名称。
IconvString.h 转码工具类 功能:转码,解决中文乱码。使用iconv 库
注意头文件的引入,每一个人可能不一样
http://blog.csdn.net/cxf7394373/article/details/7195661
先看一下用法:
别忘了引入头文件。 这里我是得到 UserDatas 文件夹下的全部 .json 文件的名字 并转成UTF-8
#include "MyFileUtils.h" #include "IconvString.h" MyFileUtils fileUtil=MyFileUtils(); vector<string> fileNames= fileUtil.getUserDataFilesName(); vector<string> fileNamesConverted; for (int j=0;j<fileNames.size();j++){ fileNamesConverted.push_back( gb2utf( fileNames[j].c_str() ) ); }
MyFileUtils.h 文件,直接在.h文件里实现 功能:读取指定文件夹下的文件名称。
#ifndef __MYFILEUTILS_H__ #define __MYFILEUTILS_H__ #include "cocos2d.h" #include "io.h" #include "iostream" #include "vector" USING_NS_CC; using namespace std; class MyFileUtils { public: vector<string> getUserDataFilesName(){//我自己的封装 string str=CCFileUtils::sharedFileUtils()->fullPathForFilename("UserDatas"); getJsonFilesName(str.c_str(),files); return files; } void getFiles( string path, vector<string>& files ) //通用代码 { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1) { do { //假设是文件夹,迭代之 //假设不是,增加列表 if((fileinfo.attrib & _A_SUBDIR)) { if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) getFiles( p.assign(path).append("\\").append(fileinfo.name), files ); } else { files.push_back(p.assign(path).append("\\").append(fileinfo.name) ); } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } } void getJsonFilesName( string path, vector<string>& files )//我自己的封装 { long hFile = 0; struct _finddata_t fileinfo; string p; if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1) { do { string str=fileinfo.name; if (str.find(".json")!=-1) { files.push_back( fileinfo.name ) ; } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } } protected: private: vector<string> files; }; #endif
IconvString.h 转码工具类 功能:转码,解决中文乱码。使用iconv 库
注意头文件的引入,每一个人可能不一样
#ifndef ICONV_STRING_H #define ICONV_STRING_H #include <string> #include "iconv/iconv.h" //通用代码 int code_convert(const char *from_charset, const char *to_charset, const char *inbuf, size_t inlen, char *outbuf, size_t outlen); std::string utf2gb(const char *inbuf); std::string gb2utf(const char *inbuf); #endif
</pre><pre code_snippet_id="316364" snippet_file_name="blog_20140428_6_4985379" name="code" class="cpp">//IconvString.cpp 实现
#include "IconvString.h" int code_convert(const char *from_charset, const char *to_charset, const char *inbuf, size_t inlen, char *outbuf, size_t outlen) { iconv_t cd; const char *temp = inbuf; const char **pin = &temp; char **pout = &outbuf; memset(outbuf,0,outlen); cd = iconv_open(to_charset,from_charset); if(cd==0) return -1; if(iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1; iconv_close(cd); return 0; } /*UTF8转为GB2312*/ std::string utf2gb(const char *inbuf) { size_t inlen = strlen(inbuf); char * outbuf = new char[inlen * 2 + 2]; std::string strRet; if(code_convert("utf-8", "gb2312", inbuf, inlen, outbuf, inlen * 2 + 2) == 0) { strRet = outbuf; } delete [] outbuf; return strRet; } /*GB2312转为UTF8*/ std::string gb2utf(const char *inbuf) { size_t inlen = strlen(inbuf); char * outbuf = new char[inlen * 2 + 2]; std::string strRet; if(code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, inlen * 2 + 2) == 0) { strRet = outbuf; } delete [] outbuf; return strRet; }
相关文章推荐
- cocos2d-x:读取指定目录下的文件名+解决中文乱码(win32下有效)
- Eclipse中properties文件读取时中文乱码、指定更新、写入中文变unicode码的解决方法
- hadoop读取hdfs文件中的中文乱码解决办法
- 读取文件,解决中文乱码问题
- ResourceBundle (读取properties文件及中文乱码解决方法)
- 解决Java读取properties文件中文乱码的问题
- 读取文件时出现中文乱码问题的解决
- 解决:R读取含中文excel文件,read.xlsx乱码问题
- 用c#读取文件内容中文是乱码的解决方法
- centos 文件夹,文件 名称乱码 解决方法
- Cocos2d-x初入学堂(7)-->win32显示中文乱码解决方法
- Java读取中文文件出现乱码解决过程
- PHP读取文件,解决中文乱码UTF-8
- VC 读取文本文件内容,中文乱码的问题解决
- java读取*.properties配置文件时,中文乱码解决方法
- Strust2 下载文件 解决中文名称乱码
- cocos2d-x 解决win32下 从文件对话框选择文件,显示在游戏中乱码的问题
- Andoird - 解决读取txt文件中文乱码问题
- mondrian schema文件:中文读取乱码并出错 的解决
- 文件、格式-【Cocos2D-X 】初窥门径(10)解决中文乱码-by小雨