• 締切済み

ファイルパスの文字長取得

VC++をやっているのですが、 「openFileDialog->FileName」で ファイルパスを取得すると 「C\\Documents and Sttings\\デスクトップ\\test.txt」 みたいに取得できます。 ファイルパスの文字長を以下のように取得しました。 「openFileDialog->FileName->length」 (↑間違っていたらすいません) このファイルパスの文字長を取得しようとすると 2バイト文字のところを1文字でカウントしているみたいで 2文字分のカウントをしてくれません。 どのようにすれば2バイト文字を2カウントとして 文字長を取得できるでしょうか?

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.3

WindowsAPIにあるlstrlenを使ってみてはどうでしょう。 http://msdn.microsoft.com/ja-jp/library/cc410906.aspx

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.2

ご自分で調べられた方が良いでしょう。 というのも、私の説明が必ずしも正解ではないからです。 それでも一応、やり方のようなものは挙げておきます。 2バイト文字、というものがどのエンコードで表されているのか不明ではありますが、ここではShift_JISであると仮定しておきます。 // -------- Code Snippet --------------------------------------- array<Byte>^ bytes = System::Text::Encoding::GetEncoding(932)->GetBytes("ハロー!"); int length = bytes->Length; Console::WriteLine(length); // コンソールには 8 が表示される。 // ------------------------------------------------------------- GetEncodingについて詳しい解説のあるサイト(MSDNライブラリ)を、参考URLに載せておきます。

参考URL:
http://msdn.microsoft.com/ja-jp/library/wzsz3bk3.aspx
  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.1

エンコーディングが分かっているのなら、バイト配列に直してしまう、という方法でどうでしょうか。

rdxs41
質問者

補足

Gab_kmさん、回答有難うございます。 エンコーディングがわかっていません。 どのように行うのでしょうか? 調べるべきだと思うのですが、よろしかったら教えてください。

関連するQ&A