Bug 6595 – std.string.format() and sformat() are obsolete

Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2011-09-02T09:54:00Z
Last change time
2012-04-24T04:59:22Z
Keywords
patch
Assigned to
nobody
Creator
k.hara.pg

Comments

Comment #0 by k.hara.pg — 2011-09-02T09:54:03Z
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 result bug 5970 - fix BigInt.toString I think format() should be implemented just appender and formattedWrite like follows: string format(Char, Args...)(in Char[] fmt, Args args) { auto w = appender!string(); formattedWrite(w, fmt, args); return w.data; } This 'format()' provides just the same features as writef(ln) functions about formatting. 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]; }
Comment #1 by k.hara.pg — 2011-09-02T11:13:39Z
Comment #2 by smjg — 2012-04-01T15:04:46Z
*** This issue has been marked as a duplicate of issue 4532 ***
Comment #3 by github-bugzilla — 2012-04-21T10:00:17Z
Commit pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/1b75b2b2890fe22fd24db4c693d718426d576f74 Merge pull request #231 from 9rnsr/fix6595 Issue 6595 - std.string.format() and sformat() are obsolete
Comment #4 by k.hara.pg — 2012-04-22T17:36:58Z
*** Issue 5042 has been marked as a duplicate of this issue. ***
Comment #5 by k.hara.pg — 2012-04-24T04:59:22Z
*** Issue 7598 has been marked as a duplicate of this issue. ***