如何将string型转化为LPCWSTR型

时间:2020-12-16 15:59:41
如题,如何将中文的string类型,转化为LPCWSTR型
比如:std::string filename(c:\\我的文档\\作业.doc);如何转化为LPCWSTR型,请高手指教

11 个解决方案

#1


自己先顶个

#2


LPCWSTR stringToLPCWSTR(std::string orig)
{
size_t origsize = orig.length() + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1));
mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);

return wcstring;
}

参考:
http://hi.baidu.com/ruisen/blog/item/601dc124a5c0cb074c088de9.html

#3


引用 2 楼 happymawolf 的回复:
LPCWSTR stringToLPCWSTR(std::string orig)
{
size_t origsize = orig.length() + 1;
  const size_t newsize = 100;
  size_t convertedChars = 0;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(……

这个代码我看过,好像只能转化英文的,如果有中文的话,就都变成乱码了。。。不知是不是这样

#4


哦,那我也不知道了,其实我对这个也不熟,正好借这个机会学习下!帮你顶顶!

#5


引用 4 楼 happymawolf 的回复:
哦,那我也不知道了,其实我对这个也不熟,正好借这个机会学习下!帮你顶顶!

恩,谢谢了,求达人解答。

#6


好像用L("文字")吧~你试试

#7


引用 6 楼 al_ways 的回复:
好像用L("文字")吧~你试试


能给个例子吗,不太明白你的意思,L(string的变量)?

#8


乱码不一定就是错的,UTF-8格式的汉子,如果不是支持UNICODE的编辑器打开的话,必然就是乱码。
LZ的问题有必要好好系统的学习一下关于字符编码的系统知识才能搞清楚这个问题--推荐《Windows核心编程》,或者网上找一下一个叫”无废话XML“的文章,里面有关于字符编码的很好的讲解。
或者,你简单一点的话就用wstring代替string看看行不行(wstring str = L"汉字";)

#9


引用 8 楼 dourgulf 的回复:
乱码不一定就是错的,UTF-8格式的汉子,如果不是支持UNICODE的编辑器打开的话,必然就是乱码。
LZ的问题有必要好好系统的学习一下关于字符编码的系统知识才能搞清楚这个问题--推荐《Windows核心编程》,或者网上找一下一个叫”无废话XML“的文章,里面有关于字符编码的很好的讲解。
或者,你简单一点的话就用wstring代替string看看行不行(wstring str = L"汉字"……

是应该好好 找本编码的书来研究一下了,结贴了,感谢各位了

#10


wchar_t buf1[100];
char buf2[100];
strcpy(buf2,filename.c_str());
multibytestowidechar( buf1,buf2 );

buf1应该就是了。

#11


L("变量")

#1


自己先顶个

#2


LPCWSTR stringToLPCWSTR(std::string orig)
{
size_t origsize = orig.length() + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1));
mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);

return wcstring;
}

参考:
http://hi.baidu.com/ruisen/blog/item/601dc124a5c0cb074c088de9.html

#3


引用 2 楼 happymawolf 的回复:
LPCWSTR stringToLPCWSTR(std::string orig)
{
size_t origsize = orig.length() + 1;
  const size_t newsize = 100;
  size_t convertedChars = 0;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(……

这个代码我看过,好像只能转化英文的,如果有中文的话,就都变成乱码了。。。不知是不是这样

#4


哦,那我也不知道了,其实我对这个也不熟,正好借这个机会学习下!帮你顶顶!

#5


引用 4 楼 happymawolf 的回复:
哦,那我也不知道了,其实我对这个也不熟,正好借这个机会学习下!帮你顶顶!

恩,谢谢了,求达人解答。

#6


好像用L("文字")吧~你试试

#7


引用 6 楼 al_ways 的回复:
好像用L("文字")吧~你试试


能给个例子吗,不太明白你的意思,L(string的变量)?

#8


乱码不一定就是错的,UTF-8格式的汉子,如果不是支持UNICODE的编辑器打开的话,必然就是乱码。
LZ的问题有必要好好系统的学习一下关于字符编码的系统知识才能搞清楚这个问题--推荐《Windows核心编程》,或者网上找一下一个叫”无废话XML“的文章,里面有关于字符编码的很好的讲解。
或者,你简单一点的话就用wstring代替string看看行不行(wstring str = L"汉字";)

#9


引用 8 楼 dourgulf 的回复:
乱码不一定就是错的,UTF-8格式的汉子,如果不是支持UNICODE的编辑器打开的话,必然就是乱码。
LZ的问题有必要好好系统的学习一下关于字符编码的系统知识才能搞清楚这个问题--推荐《Windows核心编程》,或者网上找一下一个叫”无废话XML“的文章,里面有关于字符编码的很好的讲解。
或者,你简单一点的话就用wstring代替string看看行不行(wstring str = L"汉字"……

是应该好好 找本编码的书来研究一下了,结贴了,感谢各位了

#10


wchar_t buf1[100];
char buf2[100];
strcpy(buf2,filename.c_str());
multibytestowidechar( buf1,buf2 );

buf1应该就是了。

#11


L("变量")