如何将 wchar_t[] 转换为basic_string<_Elem>?
How to convert wchar_t[] to basic_string<_Elem>?
我需要将一个项目从VS2003转换为VS2008。在以下代码中:
wchar_t wpom[30];
mbtowc(wpom, "olaboga", 10);
ati_dom::DOMString w = wpom;
我得到一个错误(在最后一行):无法从"wchar_t[30]"转换为"basic_string<_Elem>')。
我试图将其修改为:
wchar_t wpom[30];
mbtowc(wpom, "olaboga", 10);
std::basic_string<wchar_t> basic_wpom(wpom);
ati_dom::DOMString w = basic_wpom;
但我所遇到的只是另一个错误:无法从'std::basic_string<_Elem,_Traits,_Ax>'to'std::basic_string<_Elem>'
如何将wchar_t[]转换为basic_string<_Elem>而不是到basic_ string<_Elem,_Traits,_Ax>。。。?
只需通过构造函数直接使用std::wstring,该构造函数将指针指向第一个元素和数组的长度:
wchar_t warr[ 30 ];
// populate the array
std::wstring wstrTemp( &warr[ 0 ], 30 );
很抱歉没有回应-我自己发现了问题所在。
事实证明,DOMString是这样声明的:
typedef std :: basic_string< unsigned short > DOMString;
因此,简单地转换为无符号short就成功了:
ati_dom::DOMString w = (unsigned short *)wpom;
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为std::string的某个索引赋值
- <<操作员在下面的行中工作
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- std::string 的对象真的可以移动吗?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数