- ベストアンサー
ワイド文字列とコンストラクタ
ワイド文字列(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"文字列"); … } これは一体どういうことなのでしょうか。どなたか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
現象を再現可能なソースコードを補足してください。 std::wstringでできることを、なぜわざわざ作り直すのかも教えてください。
その他の回答 (1)
- bluecampus
- ベストアンサー率66% (138/209)
回答No.2
単にロケールを設定していないだけなのでは? キーワード:setlocale
質問者
お礼
ロケールの設定はしてあります。 しかし、std::wstringを使用することにいたしました。 ご回答ありがとうございます。
お礼
>std::wstringでできることを、なぜわざわざ作り直すのかも教えてください。 その通りですね。 もともとはstd::wstringにはないJavaのsplit()を実装したくてクラス化しようと思ったのですが、これだけの為にわざわざ作り直すのも確かにおかしいですね。 ご回答ありがとうございました。