ちょっとの質問

解決


清原  2006-05-05 05:40:57  No: 61680

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

よろしくお願いします


Blue  2006-05-05 07:17:24  No: 61681

ディレクトリ名を変更するということならば、

IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );

で良いのでは?

> __wchar_t[] と  char[]  お互いに変更する方法がありますか?
こっちの質問はよくわからない。説明が必要です。


清原  2006-05-06 04:56:30  No: 61682

>ディレクトリ名を変更するということならば、
>IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );
>で良いのでは?

成功しました、Blueさんのいう通りです。どうもありがとうございました。

> __wchar_t[] と  char[]  お互いに変更する方法がありますか?
>こっちの質問はよくわからない。説明が必要です。

詳しく説明してなく申し訳ありません。

unsigned char __gc[] を __wchar_t[]    に変換したり、
__wchar_t[]  を  unsigned char __gc[]  に変換したり
などの場合が多いと思いますけど、
そういう場合が来ると、どうすればいいか分からなくて、
NET  にはそういう変換する方法があると思いますが…


回答じゃないけど…  2006-05-06 05:02:44  No: 61683

質問内容のわかるタイトルをつけましょう


Blue  2006-05-06 06:03:38  No: 61684

.NET FrameworkではString型はすべてUnicode(wchar_t型)で扱われます。
エンコードはきちんとしたクラスがあります。(System::Text::Encoding)

.NET関係なく
マルチバイト文字列←→ワイド文字列の変換には WideCharToMultiByte,MultiByteToWideCharを使います。
VCならば、wcstombs,mbtowc関数を調べてみてください。


Blue  2006-05-06 06:32:43  No: 61685

> エンコードはきちんとしたクラスがあります。(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();


清原  2006-05-07 05:45:31  No: 61686

Blue様

助かりました、
お素速い応答、大変ありがとうございました
m(__)m

これからも  よろしくお願いします


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加