如何将 System::WideString 转换为 char* 或反之亦然?
我遇到一种情况,需要将 char*
与 WideString
进行比较。
如何在 C++ 中将 WideString 转换为 char*?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我遇到一种情况,需要将 char*
与 WideString
进行比较。
如何在 C++ 中将 WideString 转换为 char*?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
您可以使用 wcstombs 函数。
size_t wcstombs( char * mbstr, const wchar_t * wcstr, size_t max );
You can use the wcstombs function.
size_t wcstombs( char * mbstr, const wchar_t * wcstr, size_t max );
请参阅 WideCharToMultiByte() 和 MultiByteToWideChar()。
See WideCharToMultiByte() and MultiByteToWideChar().
比较
System::WideString
对象带有char*
(正如问题 body 所说的那样),您可以创建一个新的WideString
对象从指针,然后使用普通的==
运算符。该类有多个构造函数,其中包括一个用于const char*
的构造函数。事实上,只要
WideString
对象位于左侧,您甚至不需要调用构造函数,因为指针会自动转换。要将
WideString
转换 为char*
(正如问题 title 所说的那样),您可以考虑使用AnsiString
类型。它们之间可以相互转换。要获取普通指针,请调用c_str
方法,就像使用std::string
一样。To compare a
System::WideString
object with achar*
(as the question body says you want to do), you can create a newWideString
object from the pointer and then use ordinary==
operator. The class has several constructors, including one forconst char*
.In fact, as long as the
WideString
object is on the left, you don't even need the constructor call because the pointer will be converted automatically.To convert a
WideString
to achar*
(as the question title says you want to do), you might consider using theAnsiString
type. They're convertible between each other. To get the ordinary pointer, call thec_str
method, just like you would withstd::string
.不可能。实际上,您混合了两个不同的概念:
请参阅我对 https://stackoverflow.com/questions/1049947/should-utf 的回答-16-be-considered-harmful 关于如何正确处理文本。
Not possible. Actually, you mixed two different concepts:
Please see my answer to https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful about how to properly handle text.