- 締切済み
ファイルパスの文字長取得
VC++をやっているのですが、 「openFileDialog->FileName」で ファイルパスを取得すると 「C\\Documents and Sttings\\デスクトップ\\test.txt」 みたいに取得できます。 ファイルパスの文字長を以下のように取得しました。 「openFileDialog->FileName->length」 (↑間違っていたらすいません) このファイルパスの文字長を取得しようとすると 2バイト文字のところを1文字でカウントしているみたいで 2文字分のカウントをしてくれません。 どのようにすれば2バイト文字を2カウントとして 文字長を取得できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1416)
WindowsAPIにあるlstrlenを使ってみてはどうでしょう。 http://msdn.microsoft.com/ja-jp/library/cc410906.aspx
- Gab_km
- ベストアンサー率40% (20/50)
ご自分で調べられた方が良いでしょう。 というのも、私の説明が必ずしも正解ではないからです。 それでも一応、やり方のようなものは挙げておきます。 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に載せておきます。
- Gab_km
- ベストアンサー率40% (20/50)
エンコーディングが分かっているのなら、バイト配列に直してしまう、という方法でどうでしょうか。
補足
Gab_kmさん、回答有難うございます。 エンコーディングがわかっていません。 どのように行うのでしょうか? 調べるべきだと思うのですが、よろしかったら教えてください。