MSVC _wrenameがlinux g ++に存在するかどうかは誰にも分かりますか? (Unicodeの使用のためのパラメータの型として代わりにのconst char型のcstdioをファイルの同等のconst wchar_t型を使用して機能の名前を変更* *)linux g ++のMSVC++ _wrenameに相当しますか?
ありがとう!
MSVC _wrenameがlinux g ++に存在するかどうかは誰にも分かりますか? (Unicodeの使用のためのパラメータの型として代わりにのconst char型のcstdioをファイルの同等のconst wchar_t型を使用して機能の名前を変更* *)linux g ++のMSVC++ _wrenameに相当しますか?
ありがとう!
プラットフォームに固有です。私はconst wchar_t *をconst char *に変換しなければならないと思います。 Linuxでは、iconv関数を使うことができると思います。
EDIT:ブーストは、おそらくポイントはNTFSストアバイト -stringsで、ファイル名よりも、ほとんどのファイルシステム他をということである。この
のために何かを持っています。通常、エンコーディングの明示的な概念はありませんが、ファイル名は0で終わる非ゼロバイトの文字列でなければなりません。したがって、このようなシステムでは、ファイルシステム関数はファイル名の引数をchar*
とするだけで、エンコードの問題を処理する方法を自分で判断する必要があります。
NTFSのファイル名は16ビット単位のヌルターミネーション文字列であるため、Windowsは特殊です。これは、Windows上の16ビットwchar_t
タイプと、さまざまなファイルシステム機能の_w*
と関連しています。
非常に面白いおかげで。私はまだ得られないものがあります。 linuxでは、stdio renameを使用すると、asciiの8bit文字列またはコード化されたUnicode 16bit文字列(単純な8bit文字列として渡される)をシステムがどのように受け渡すかを知ることができますか? (私の質問がはっきりしているかどうかわかりません...) – Juicebox
@Juicebox:私が知っているファイルシステムはエンコーディングの概念を持っていません。正しいファイル名だと思うものをそのまま渡すだけです。ちなみに、「8ビットASCII」や「ユニコード16ビット文字列」などはありません。あなたはおそらく他の何かを意味するでしょう。 –
結果として、ほとんどのファイルシステムは、ファイル名を含む「文字」の概念を持たず、「コード単位」のみを持ちます。あなたは完全に一般に「このファイル名は何文字ですか」と尋ねることはできません(たとえば、ファイル名は単一の不正なUnicodeサロゲートからなるかもしれません)。これはバイト列と "文字からなるテキスト"という概念の根本的な違いに過ぎません。前者は非常に簡単で、後者は非常に難しい。 –
私のmingw-w64 CRTにはこれがあります。あるいは、Linux/POSIXの代替案をお探しですか? – rubenvb
私はLinuxの代替を探しています、私はprecuredする必要があります。あなたの返信をありがとう:) – Juicebox