この質問は、この前の質問を修正したものです。
ubyte[]を指定されたエンコーディングにデコードする方法は?
ubyte[]属性から返された配列std.zip.ArchiveMember.expandedDataを文字列またはその他の範囲指定可能な文字列のコレクションに変換する慣用的な方法を探しています...内容全体が呼び出しFile.open("file")に似ているか、同様の方法で反復可能なものFile.open("file").byLine()です。
これまでのところ、文字配列または文字列を扱う標準ドキュメントから見つけたものはすべて引数を認めていませんubyte[].Dのzipファイル処理に関する例は非常に初歩的で、zipアーカイブとそのメンバーファイルから生データを取得することのみを扱っています. ...生のバイトストリームとテキスト指向のファイル/文字列操作の間で簡単に階層化できる明確なファイル/ストリーム/ioインターフェイスはありません。
個々のコードポイントで何かを見つけstd.utfたりstd.uni、デコードしたり、バイトストリームを while/for ループしたりできると思いますが、もっと良い方法があるのではないでしょうか?
コードサンプル:
std.zip.ZipArchive zipFile;
// just humor me, this is what I've been given.
zipFile = new std.zip.ZipArchive("dataSet.csv.zip");
foreach(memberFile; zipFile.directory)
{
zipFile.expand(memberFile);
ubyte[] uByteArray = memberFile.expandedData;
// ok, now what?
// is there a relatively simplistic way to get this
// decoded/translated byteStream into a string
// or collection of strings(for example, one string per line
// of the compressed file) ?
string completeCsvContents = uByteArray.PQR();
string[] csvRows = uByteArray.XYZ();
}
PQR または XYZ に簡単に入力できるものはありますか?
または、次のスタイルで API 呼び出しを行うことが問題である場合
string csvData = std.ABC.PQR(uByteArray)
ABC/PQR とは?