• ベストアンサー

ワイド文字列とコンストラクタ

ワイド文字列(UNICODE)をクラス化しようとしているのですが、 コンストラクタにconst wchar_t*型の引数を持たせて呼び出すと、 コンストラクタに渡された文字列が消えてしまい、wcslen()でサイズを求めると何故かサイズも0になっています。 class WideString { public: WideString(const wchar_t*); … }; WideString::WideString(const wchar_t* ws) { ::OutputDebugString(ws); // ←文字列が消えてる?表示されない int len = wcslen(ws); // ←これが0 } int main(void) { WideString wStr(L"文字列"); … } これは一体どういうことなのでしょうか。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

現象を再現可能なソースコードを補足してください。 std::wstringでできることを、なぜわざわざ作り直すのかも教えてください。

RabbitWrap
質問者

お礼

>std::wstringでできることを、なぜわざわざ作り直すのかも教えてください。 その通りですね。 もともとはstd::wstringにはないJavaのsplit()を実装したくてクラス化しようと思ったのですが、これだけの為にわざわざ作り直すのも確かにおかしいですね。 ご回答ありがとうございました。

その他の回答 (1)

回答No.2

単にロケールを設定していないだけなのでは? キーワード:setlocale

RabbitWrap
質問者

お礼

ロケールの設定はしてあります。 しかし、std::wstringを使用することにいたしました。 ご回答ありがとうございます。