我怎样转换系统::WideString到char*和反之亦然?
-
20-09-2019 - |
题
我有一种情况,我需要比较 char*
与 WideString
.
我怎样转换的WideString到char*在C++?
解决方案
可以使用wcstombs功能。
其他提示
不可能。实际上,您混合了两个不同的概念:
- Widestring 意味着 UTF-16 编码中的缓冲区。
- char* 可以包含从 UTF-8 到纯 ASCII 文本的任何内容(在这种情况下,仅当您的宽字符串不包含非 ASCII 字符时才可转换)。
请看我的回答 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();
不隶属于 StackOverflow