Chinaunix

标题: 请问 C++ 中如何把 string 类型的字符串转换成 wstring 类型的字符串? [打印本页]

作者: zhujiang73    时间: 2006-10-18 20:47
标题: 请问 C++ 中如何把 string 类型的字符串转换成 wstring 类型的字符串?
是不是有个转换函数,而且和 locale 设置有关,
但是下面的代码中 locale 设置好像无效 ?


  1.         locale loc("chs");

  2.         char narrow[] = "你好 hello";

  3.         wchar_t wide_cpp[100];

  4.         memset(wide_cpp, 0, sizeof(wide_cpp));

  5.         (use_facet<ctype<wchar_t> >(loc)).widen(narrow, narrow + strlen(narrow), wide_cpp);
复制代码

作者: zhujiang73    时间: 2006-10-19 20:41
标题: 回复 1楼 zhujiang73 的帖子
没人知道吗?
作者: ChinaDream    时间: 2006-10-19 21:33
原帖由 zhujiang73 于 2006-10-18 20:47 发表
是不是有个转换函数,而且和 locale 设置有关,
但是下面的代码中 locale 设置好像无效 ?

[code]
        locale loc("chs");

        char narrow[] = "你好 hello";

        w ...





wchar * _wcspcpy(wchar *dest, const wchar *src);
这个C函数就可以啊
作者: zhujiang73    时间: 2006-10-20 20:45
标题: 回复 1楼 zhujiang73 的帖子

  1. #include <locale>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <clocale>
  5. #include <iostream>
  6. #include <string>
  7. #include <sstream>

  8. char             narrow[100];
  9. wchar_t          word[100];
  10. const char      *from = narrow;
  11. const char      *nstart = narrow;
  12. wchar_t         *to = 0;
  13. wchar_t         *wstart = word;
  14. mbstate_t         cs;
  15. std::wstring     my_wstr;


  16. int main( )
  17. {
  18.         std::locale::global(std::locale(""));

  19.         snprintf(narrow, 99, "%s", "12 测试 abc 你好");

  20.       
  21.         std::use_facet< std::codecvt<wchar_t, char, mbstate_t> >(std::locale("")).in(cs, nstart, nstart+strlen(narrow), from, wstart,wstart+100, to );

  22.         my_wstr = word;

  23.         std::wcout << L"word = " << word << std::endl;
  24.         std::wcout << L"my_wstr = " << my_wstr << std::endl;

  25.         std::wcout << L"wcslen word = "  << wcslen(word) << std::endl;
  26.        
  27.         return 0;
  28. }
复制代码


成了,在我的 debian
上面,不过上面的代码是我参考了一些资料后照猫画虎而成。还是没全懂,继续研究。

参考资料:
http://book.77169.com/data/web5603/20050228/20050228__3334439.html
http://www.tacc.utexas.edu/services/userguides/pgi/pgC++_lib/stdlibug/sta_9169.htm
http://www.cantrip.org/locale.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2