On 2015-02-04 at 00:07, Foo wrote:
How would I use decoding for that? Isn't there a way to read the file as utf8 
or event better, as unicode?

Well, apparently the utf-8-aware foreach loop still works just fine.
This program shows the file size and the number of unicode glyps, or whatever 
they are called:

    import core.stdc.stdio;
    int main() @nogc
    {
        const int bufSize = 64000;
        char[bufSize] buffer;
        size_t bytesRead, count;
        FILE* f = core.stdc.stdio.fopen("test.d", "r");
        if (!f)
            return 1;
        bytesRead = fread(cast(void*)buffer, 1, bufSize, f);
        if (bytesRead > bufSize - 1) {
            printf("File is too big");
            return 1;
        }
        if (!bytesRead)
            return 2;
        foreach (dchar d; buffer[0..bytesRead])
            count++;
        printf("read %d bytes, %d unicode characters\n", bytesRead, count);
        fclose(f);
        return 0;
    }

Outputs for example this: read 838 bytes, 829 unicode characters

(It would be more complicated if it had to process bigger files.)

Reply via email to