Summary: std.string.format() and sformat() are obsolete
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos

--- Comment #0 from Kenji Hara <> 2011-09-02 09:54:03 PDT ---
This enhancement issue is nearly a bug report.

format() and sformat() use std.format.doFormat as their implementations, but it
is old feature, and its features are fewer than formatValue family.

And it is causing not a few issues:
bug 3715 - std.string.format can't use const/immutable toString functions
bug 4266 - add support for structs in std.format.doFormat
bug 4532 - Position specifiers don't work in format
bug 5444 - std.string.format: arguments without format specifier appended to
bug 5970 - fix BigInt.toString

I think format() should be implemented just appender and formattedWrite like

string format(Char, Args...)(in Char[] fmt, Args args)
    auto w = appender!string();
    formattedWrite(w, fmt, args);

This 'format()' provides just the same features as writef(ln) functions about

And sformat() also could replace like follows:

char[] sformat(Char, Args...)(char[] buf, in Char[] fmt, Args args)
    size_t i;
    void sink(const(char)[] s) {
        if (buf.length < i + s.length)
            onRangeError("std.string.sformat", 0);
        buf[i .. i + s.length] = s[];
        i += s.length;
    formattedWrite(&sink, fmt, args);
    return buf[0 .. i];

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to