繁体   English   中英

如何将System :: WideString转换为char *,反之亦然?

[英]How do I convert System::WideString to a char* and vice versa?

我有一种情况需要将char*WideString进行比较。
如何在C ++中将WideString转换为char *?

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

  • Widestring意味着UTF-16编码的缓冲区。
  • char *可以包含任何内容,从UTF-8到仅ASCII文本(在这种情况下,只有当您的widestring不包含非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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM