csv转lua
来源:互联网 发布:linux vim 查找字符串 编辑:程序博客网 时间:2024/05/16 07:08
本人现在一个人负责一款RPG手游的客户端,真是压力山大啊,首先客户端的是采用的cocos2d-x + lua,之前都是用纯C++写的,数值这块用的是csv,当我接触到lua时,我就想到了,如果把csv直接转成lua代码,那在程序中用起来应该很方便,有了念头,不妨来试试,效果果然很理想,由于代码简单,我这就不写注释了,只是给大家提供这么一个思路,本人工作经验也不多,自己瞎琢磨出来的办法不知道是不是真的是个好办法,还希望前辈们多多指教
csv文件
转换成lua代码后
QT源代码
#include <QCoreApplication>#include <QFile>#include <QTextStream>#include <QDebug>#include <QDir>#include <QTextDecoder>#include <QTextCodec>bool findFile(const QString& path);void csv2lua(QFileInfo& file_info);int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QFile file("D:\\qt_project\\TOLUA\\tolua.ini"); QString filepath=""; if(file.open(QFile::ReadOnly)) { QTextStream stream(&file); filepath= stream.readLine(); } file.close(); findFile(filepath); return a.exec();}bool findFile(const QString & path){ QDir dir(path); if (!dir.exists()) { return false; } dir.setFilter(QDir::Dirs|QDir::Files); dir.setSorting(QDir::DirsFirst); QFileInfoList list = dir.entryInfoList(); int i = 0; bool is_dir = false; do{ QFileInfo file_info = list.at(i); QStringList list; if (file_info.fileName()=="."|file_info.fileName()=="..") { i++; continue; } is_dir = file_info.isDir(); if (is_dir) { findFile(file_info.filePath()); } else if(file_info.suffix() == "csv") { csv2lua(file_info); } ++i; } while(i<list.size()); return true;}bool save(QString& file_path, QString& data){ QFile outfile(file_path); if (!outfile.open(QIODevice::WriteOnly | QIODevice::Text)) { return false; } QTextStream outstream(&outfile); outstream.setCodec("UTF-8"); outstream << data; outstream.flush(); outfile.close(); return true;}void csv2lua(QFileInfo& file_info){ qDebug()<<file_info.absoluteFilePath(); QFile csv_file(file_info.absoluteFilePath()); if(!csv_file.open(QFile::ReadOnly)) { return; } QTextStream csv_stream(&csv_file); QString line; bool data_type = false; QStringList type_list; QString data; while((line = csv_stream.readLine()) != "") { QRegExp rx("[#]"); line.replace(rx,"-"); QStringList list = line.split(";"); if(line.startsWith("--")) { data.append(line + "\n"); continue; } if(!data_type && !line.startsWith("--")) { type_list = list; data_type = true; data.append("--" + line + "\n"); data.append(file_info.baseName() + "_tab =\n{\n"); continue; } for(int i=0; i<list.size(); ++i) { QString element = list.at(i); if(type_list.at(i) == "string") { element = "\"" + element + "\""; } if(i < type_list.size() - 1) { element.append(";"); if(i == 0) { element = "{" + element; } } else { element.append("};\n"); } data.append(element); } } data.append("}"); qDebug()<<data.toStdString().c_str(); QString lua_file_path = file_info.absolutePath() + "\\"+ file_info.baseName() + ".lua"; save(lua_file_path, data);}
使用方法
dofile("E:\\Resourse\\Test\\test.lua")print("fuck=" .. test_tab[1][3][1])
打印结果
0 0
- csv转lua
- Csv转Lua工具(纯Lua版)
- lua加载csv文件
- lua读取CSV文件
- 使用lua读取csv文件
- lua读取excel导出的csv文件
- 【cocos2d-x 3.5】Lua读取CSV
- cocos2d-x(quick-lua)读取csv文件
- lua解析csv,插入到数据库
- cocos2dx lua解析csv成lua配置文件,方便程序调用
- LUA读取CSV文件的一个简单Demo
- CSV 转TXT
- csv转sql
- csv(txt)转json
- csv转XML
- csv转Libsvm格式
- csv转mongodb
- linux excel转csv
- Java 空字符串“”和null区别
- 黑马程序员——多线程
- python 文件遍历
- Android下GridView结合LongClick来处理contextmenu
- MATLAB中的特殊变量
- csv转lua
- HTML设置元素透明度
- vmware虚拟机配置
- matlab与C混合编程调试-vs2010+matlab2012a
- 如何在Word2003中添加上下标文字
- UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
- flot - jQuery 图表插件(jquery.flot)使用
- 内存管理
- Linux系统下增加多串口