質問

い状況がんなどの比較 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) { ... }

変換する ある WideStringchar* (質問としては タイトル したいと言っています)、を使用することを検討してください。 AnsiString タイプ。相互に変換可能です。通常のポインタを取得するには、 c_str メソッドと同じように、 std::string.

WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top