Windows XP
Visual C++.NET Managed C++
VC.Netの問題ですが、よろしくお願いします…
__wchar_t[] と char[] お互いに変更する方法がありますか?
ディレクトリ の名前を変更する方法がありますか?
DirectoryEntryクラスのRenameメソッド使ったけど、
エラー発生しました、
コード:
System::DirectoryServices::DirectoryEntry* dir =
new DirectoryEntry(S"F:\\Justin");
dir->Rename(S"Hello");
************** 例外テキスト **************
System.Runtime.InteropServices.COMException (0x80005000): 不明なエラー (0x80005000
よろしくお願いします
ディレクトリ名を変更するということならば、
IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );
で良いのでは?
> __wchar_t[] と char[] お互いに変更する方法がありますか?
こっちの質問はよくわからない。説明が必要です。
>ディレクトリ名を変更するということならば、
>IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );
>で良いのでは?
成功しました、Blueさんのいう通りです。どうもありがとうございました。
> __wchar_t[] と char[] お互いに変更する方法がありますか?
>こっちの質問はよくわからない。説明が必要です。
詳しく説明してなく申し訳ありません。
unsigned char __gc[] を __wchar_t[] に変換したり、
__wchar_t[] を unsigned char __gc[] に変換したり
などの場合が多いと思いますけど、
そういう場合が来ると、どうすればいいか分からなくて、
NET にはそういう変換する方法があると思いますが…
質問内容のわかるタイトルをつけましょう
.NET FrameworkではString型はすべてUnicode(wchar_t型)で扱われます。
エンコードはきちんとしたクラスがあります。(System::Text::Encoding)
.NET関係なく
マルチバイト文字列←→ワイド文字列の変換には WideCharToMultiByte,MultiByteToWideCharを使います。
VCならば、wcstombs,mbtowc関数を調べてみてください。
> エンコードはきちんとしたクラスがあります。(System::Text::Encoding)
適当なサンプル
// String*型から wchar_t __gc []の取得
String* s = S"あいうえお";
wchar_t ws __gc[] = s->ToCharArray();
// String*型から Shift_JISコードの char __gc []の取得
String* s = S"あいうえお";
char mbs __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetBytes( s );
// wchar_t __gc [] から Shift_JISコードの char __gc []の取得
char mbs __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetBytes( ws );
// Shift_JISコードの char __gc [] から String*型文字列の取得
String* s = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetString( mbs );
// Shift_JISコードの char __gc [] からwchar_t __gc []の取得
wchar_t ws __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetString( mbs )->ToCharArray();
Blue様
助かりました、
お素速い応答、大変ありがとうございました
m(__)m
これからも よろしくお願いします
ツイート | ![]() |