掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
mallocとwsprintfでString→charを確実に置換するには? (ID:65478)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
とりあえず、 >SetText->Length ではUnicodeでの文字数しか取得できません。 ですのでCP932(Shift_JIS)をあつかうchar型配列では たとえば、 "あ" という文字列はUnicodeでは1文字ですが、 char型配列で扱う上では('\0'を含み)3バイト必要になります。 よって、mallocした領域以上にwsprintfで文字を入れてしまうため freeでエラーになるようになっているのです。 (本来ならばwsprintfでエラーになるべきですけど。) Unicodeで扱っているSystem::Stringを Shift_JISで扱うchar型配列に入れるには文字コード変換が 必須になります。 一般的にはEncodingクラスをつかったりMarshalクラスを使って .NET Frameworkが用意しているクラスでchar*型に変換します。 Visual C++ .NET で System::String* から char* に変換する方法 http://support.microsoft.com/kb/311259/ja
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.