我有一种情况,我需要将 achar*
与 a进行比较WideString
。
如何在 C++ 中将 WideString 转换为 char*?
问问题
7963 次
4 回答
6
您可以使用 wcstombs 函数。
size_t wcstombs( char * mbstr, const wchar_t * wcstr, size_t max ) ;
于 2009-12-17T23:59:32.543 回答
3
于 2009-12-17T23:59:55.927 回答
2
要将对象与 a进行比较(正如问题主体所说的那样),您可以从指针创建一个新对象,然后使用普通运算符。该类有几个构造函数,包括一个用于.System::WideString
char*
WideString
==
const char*
char* foo = ...;
WideString bar = ...;
if (WideString(foo) == bar)
std::cout << "They're equal!\n";
事实上,只要WideString
对象在左边,你甚至不需要构造函数调用,因为指针会自动转换。
if (bar == foo) { ... }
要将a转换WideString
为 a char*
(正如问题标题所说的那样),您可以考虑使用该AnsiString
类型。它们可以相互转换。要获取普通指针,请调用该c_str
方法,就像使用std::string
.
WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();
于 2009-12-18T02:46:37.853 回答
1
不可能。实际上,您混合了两个不同的概念:
- Widestring 表示 UTF-16 编码的缓冲区。
- char* 可能包含任何内容,从 UTF-8 到纯 ASCII 文本(在这种情况下,只有当您的宽字符串不包含非 ASCII 字符时才可转换)。
请参阅我对https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful的回答,了解如何正确处理文本。
于 2009-12-18T01:32:40.250 回答