[英]How do I convert System::WideString to a char* and vice versa?
我有一种情况需要将char*
与WideString
进行比较。
如何在C ++中将WideString转换为char *?
您可以使用wcstombs功能。
size_t wcstombs(char * mbstr,const wchar_t * wcstr,size_t max) ;
不可能。 实际上,你混合了两个不同的概念:
请参阅我对https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful的回答,了解如何正确处理文本。
要比较一个System::WideString
一个对象char*
(如身体问题说你想做的事),你可以创建一个新的WideString
从指针对象,然后使用普通的==
操作符。 该类有几个构造函数,包括一个const char*
。
char* foo = ...;
WideString bar = ...;
if (WideString(foo) == bar)
std::cout << "They're equal!\n";
实际上,只要WideString
对象在左侧,您甚至不需要构造函数调用,因为指针将自动转换。
if (bar == foo) { ... }
要将WideString
转换为char*
(如问题标题所示 ,您可以考虑使用AnsiString
类型)。 它们可以在彼此之间转换。 要获取普通指针,请调用c_str
方法,就像使用std::string
。
WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.