我有一种情况需要将char*
与WideString
进行比较
如何在C ++中将WideString转换为char *?
答案 0 :(得分:6)
您可以使用wcstombs功能。
size_t wcstombs( char * mbstr, const wchar_t * wcstr, size_t max );
答案 1 :(得分:3)
答案 2 :(得分:1)
不可能。实际上,你混合了两个不同的概念:
请参阅我对https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful关于如何正确处理文字的回答。
答案 3 :(得分:1)
要比较 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*
(因为问题 title 表示您想要这样做),您可以考虑使用{ {3}}类型。它们可以在彼此之间转换。要获得普通指针,请调用AnsiString
方法,就像使用std::string
一样。
WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();