我有一种情况,我需要比较 char*WideString.
我怎样转换的WideString到char*在C++?

有帮助吗?

其他提示

不可能。实际上,您混合了两个不同的概念:

  • 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) { ... }

转化 WideStringchar*(作为问题的标题的说,你想做的事),你可能会考虑使用的 AnsiString 类型。他们相互之间的转换。为了让普通的指针,调用 c_str 的方法,就像你将与std::string

WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top