どんなに変換システム::WideStringをchar*ょうか。
-
20-09-2019 - |
質問
い状況がんなどの比較 char*
と WideString
.
どんなに変換しWideStringをchar*C++?
解決
あなたはwcstombs関数を使用することができます。
size_tのwcstombs(のchar *のmbstr、CONSTはwchar_t * wcstr、size_tの最大)こちら;
他のヒント
ありえない。実際には、次の 2 つの異なる概念を混合しました。
- 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