LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1639|回复: 7

linux下有没有类似WideCharToMultiByte 的函数

[复制链接]
发表于 2004-7-26 16:12:59 | 显示全部楼层 |阅读模式
unicode 和 utf的转换函数,vc带有的,不知到linux有没有类似的?
发表于 2004-7-26 17:32:40 | 显示全部楼层
man wctomb
 楼主| 发表于 2004-7-27 13:21:10 | 显示全部楼层
3ks very much!
在问一下,在程序中如何设置该进程的优先级别?
发表于 2004-7-27 19:08:00 | 显示全部楼层
man 2 nice
 楼主| 发表于 2004-7-28 21:22:17 | 显示全部楼层
现在是这个样子的,
我的程序通过java的一个接口获得一个wchar_t 串pwszText.
现在我想打印pwszText,用printf好像不行.请教如何打印?是不是wprintf?

然后我想把pwszText拷贝到pwszBuffer中.
  pwszBuffer = new wchar_t[wcslen(pwszText)+1];
  memset(pwszBuffer, 0, lSize + 1);
  wcscpy( pwszBuffer, pwszText );
程序在这里出错.请教1




   然后转化:
      pszText = new char[(size_t)(lSize + 1) * 2];
      if(pszText == NULL)
      {
          delete[] pwszBuffer;
          return NULL;
      }

      memset(pszText, 0, (lSize + 1) * 2);
#ifdef PLAT_WIN32
        nlen = WideCharToMultiByte(CP_ACP, 0, pwszBuffer, -1,
            pszText, (lSize + 1) * 2, NULL, NULL);
#else// linux systerm //程序中执行这个
      nlen = wcstombs(  pszText, pwszText, 2*(lSize+1) );  
#endif

      printf("WideChar To MultiByte returns %d\n", nlen);
      printf("pszText is \"%s\"\n", pszText);
打印出来的是
       WideChar To MultiByte returns -1
       pszText is ""

我用法哪里出错了?请有经验的牛人帮我!
第一次写unicode的东西,感觉什么都不会啊,惭愧!
 楼主| 发表于 2004-7-29 10:14:50 | 显示全部楼层
牛人帮我!
发表于 2004-7-29 10:22:43 | 显示全部楼层
lSize是什么东西?
好像没有声明嘛。
 楼主| 发表于 2004-7-29 19:31:01 | 显示全部楼层
各位老大, 我现在是在java中调用我的C++动态库.java中用的是unicode,
两个字节.vc中的宽字节也是unsigned short.
可是linux 中的 sizeof(wchar_t) = 4.
所以我用java中传过来的unicode调用wcstombs()时转化不了,有没有人碰到过这个情况?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表