[Issue 8384] Poor wchar/dchar* to string conversion support
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jul 13 12:00:59 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8384
Jonathan M Davis <jmdavisProg at gmx.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jmdavisProg at gmx.com
--- Comment #1 from Jonathan M Davis <jmdavisProg at gmx.com> 2012-07-13 12:00:53 PDT ---
So, you expect %s on a pointer to give you the string that it points to? Why?
It's pointer, not a string. It's going to convert the pointer. That works as
expected.
to!string should take null-terminated string and give you a string, and it does
that. This code passes:
import std.conv;
import std.string;
void main()
{
static void test(T)(T lp)
{
assert(to!string(lp), "hello world");
}
test("Hello, world!" .ptr);
test("Hello, world!"w.ptr);
test("Hello, world!"d.ptr);
}
So, I'd say that as far as your code goes, there's nothing wrong with it. It
functions exactly as expected. What _doesn't_ work is this:
import std.conv;
import std.string;
void main()
{
static void test(T)(T lp)
{
assert(to!wstring(lp), "hello world");
assert(to!dstring(lp), "hello world");
}
test("Hello, world!" .ptr);
test("Hello, world!"w.ptr);
test("Hello, world!"d.ptr);
}
The code doesn't even compile, giving these errors:
/home/jmdavis/dmd2/linux/bin/../../src/phobos/std/conv.d(819): Error:
incompatible types for
((cast(immutable(dchar)[])_adDupT(&_D12TypeInfo_Aya6__initZ,value[cast(ulong)0..strlen(cast(const(char*))value)]))
? (null)): 'immutable(dchar)[]' and 'string'
/home/jmdavis/dmd2/linux/bin/../../src/phobos/std/conv.d(268): Error: template
instance std.conv.toImpl!(immutable(dchar)[],immutable(char)*) error
instantiating
q.d(8): instantiated from here: to!(immutable(char)*)
q.d(11): instantiated from here: test!(immutable(char)*)
q.d(8): Error: template instance
std.conv.to!(immutable(dchar)[]).to!(immutable(char)*) error instantiating
q.d(11): instantiated from here: test!(immutable(char)*)
q.d(11): Error: template instance q.main.test!(immutable(char)*) error
instantiating
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list