luabind 导出string问题

luabind导出字符串 不能导出char* 会有问题 应该是字符串连接的时候出错了

static _TCHAR* pRetChar = new _TCHAR[10];
memcpy(pRetChar,szName,10);
return NetE::wtoutf8(pRetChar);   //WCharToMultiByte 为什么就不可以那?

std::string wtoutf8 ( const wchar_t *wstr )
{
std::string str = "";
if ( NULL == wstr ) return str;

size_t wlen = wcslen(wstr);
if ( wlen >= 1020 ) wlen = 1020; // 防止溢出

unsigned char obuff[1024] = "";

unsigned char *t = obuff;
wchar_t *us = const_cast<wchar_t*>(wstr);

int UNICODE_CHARS = (sizeof(wchar_t) >= 4 ? 0x110000 : 0x10000);

for (size_t i = 0; i < wlen; i++)
{
wchar_t mychar = us[i];
if (mychar <= 0x7F)
{
*t++ = mychar; /* 7 sig bits */
}
else if (mychar <= 0x7FF)
{ /* 11 sig bits */
*t++ = 0xC0 | (unsigned char) (mychar >> 6); /* upper 5 bits */
*t++ = 0x80 | (unsigned char) (mychar & 0x3F); /* lower 6 bits */
}
else if (mychar <= 0xFFFF)
{ /* 16 sig bits */
*t++ = 0xE0 | (unsigned char) (mychar >> 12); /* upper 4 bits */
*t++ = 0x80 | (unsigned char) ((mychar >> 6) & 0x3F); /* next 6 bits */
*t++ = 0x80 | (unsigned char) (mychar & 0x3F); /* lowest 6 bits */
}
else if (mychar < UNICODE_CHARS)
{ /* 21 sig bits */
*t++ = 0xF0 | (unsigned char) ((mychar >> 18) & 0x07); /* upper 3 bits */
*t++ = 0x80 | (unsigned char) ((mychar >> 12) & 0x3F); /* next 6 bits */
*t++ = 0x80 | (unsigned char) ((mychar >> 6) & 0x3F); /* next 6 bits */
*t++ = 0x80 | (unsigned char) (mychar & 0x3F); /* lowest 6 bits */
}
}
str = (char*)obuff;
return str;
}

时间: 2024-08-28 23:33:45

luabind 导出string问题的相关文章

java导出数据Excel总结

//创建获取到JFileChooser的文件名的JTextField public JTextField getTextField(Container c){ JTextField textField = null; for (int i = 0; i < c.getComponentCount(); i++) { Component cnt = c.getComponent(i); if (cnt instanceof JTextField) { return (JTextField) cnt

KindEditor的内容以Word的形式导出

//导出按钮 protected void btn_Export_Click(object sender, EventArgs e)        {            Model.article art = new BLL.Common().GetModel(this.id); WriteHtml(art.content);//art.content这个是显示的内容,我存在数据库中,是html 标签,从编辑器存到数据库中        } //参数内容都是从数据库读出来的文章信息,其中co

jsp导出到Excel

jsp模板文件 <%@ page isELIgnored="false" contentType="application/x-msdownload; charset=GBK"%> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <%@ taglib prefix="s" uri="/st

按照word/Excel模板导出word/excel

最近项目要实现下载打印的功能,想了想,用水晶报表实在是大材小用, 用office组件直接就可以实现这一功能. 引用类 using Microsoft.Office.Interop.Word; 建立两个实体类 一个是导出word需要替换内容的配置,一个是替换内容的实体 public class AgentInfoEntity     {                 private string comname; public string ComName         {          

JAVA导出Excel(支持多sheet)

一.批量导出: /** * * @Title: expExcel * @Description: 批量导出客户信息 * @param @param params * @param @param request * @param @param response * @param @throws Exception * @return void * @throws */ @RequestMapping("expExcel") public void expExcel(QueryCustom

用java8重写Arrays.sort(oldWay, new Comparator&lt;String&gt;(){@Override public int compare(String s1, String s2)});

参考https://www.liaoxuefeng.com/article/001411306573093ce6ebcdd67624db98acedb2a905c8ea4000/ Java 8终于引进了lambda表达式,这标志着Java往函数式编程又迈进了一小步. 在Java 8以前的代码中,为了实现带一个方法的接口,往往需要定义一个匿名类并复写接口方法,代码显得很臃肿.比如常见的Comparator接口: String[] oldWay = "Improving code with Lamb

java 使用POI导出百万级数据

先看结果吧,这只是测试其中有很多因数影响了性能. 表总数为:7千多万,测试导出100万 表字段有17个字段 最终excel大小有60多兆 总耗时:126165毫秒 差不多2分多钟 其核心简单来说就是分批写入,就是分页一样.这样的好处就是不会内存溢出. (真的不会写博客...) 直接上代码了 public void download(HttpServletResponse response) throws Exception{ // 一次读取的数量 int listCount = 200000;

转载一篇将C/C++ 与lua混合使用讲的比较入门的文章

转自 http://www.open-open.com/home/space-6246-do-blog-id-1426.html Lua是一个嵌入式的脚本语言,它不仅可以单独使用还能与其它语言混合调用.Lua与其它脚本语言相比,其突出优势在于: 可扩展性.Lua的扩展性非常卓越,以至于很多人把Lua用作搭建领域语言的工具(注:比如游戏脚本).Lua被设计为易于扩展的,可以通过Lua代码或者 C代码扩展,Lua的很多功能都是通过外部库来扩展的.Lua很容易与C/C++.java.fortran.S

mysql如何用jsp代码进行数据库备份

mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test.sql"; java.lang.Runtime.getRuntime().exec("cmd /c "+mysql); 导入: String mysql="mysqladmin -uroot -proot create databasename"; java