How can I concatenate a string, a char array and an int

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 29 03:11:37 PST 2016


On Tuesday, 29 November 2016 at 10:21:24 UTC, Anders S wrote:
> Hi guys,
>
> just started to get into Dlang, comming from C and C++ I like 
> to use methods like there if possible.
>
> Now I want to catenate something like this, but don't get it to 
> work
> in standard C i code:
>    char str[80];
>    sprintf(str, "This is a number = %f", 3.14356);
>
> Now in Dlang and import core.stdc.string and
> code:
>     char [80] str;
>     sprintf(str, "This is a number = %d", 314356);
>     writefln("%s", str);
>

sprintf(str.ptr, "This is a number = %d".toStringz,314356);

> but get error
> Error: function core.stdc.stdio.sprintf (char* s, const(char*) 
> format, ...) is not callable using argument types (char[80], 
> string, int)
>

because in D arrays do not decay to pointers. To get a null 
terminated string use toStringz

> Nor does this work
>    char [50] temp = "This is a number";
>    string greeting5= temp~" "~314356;
>    writefln("%s",greeting5);
>

add a to!string

314356.to!string

> result in error:
> Error: incompatible types for ((cast(const(char)[])temp ~ " ") 
> ~ (314356)): 'char[]' and 'int'
>
>
> Any ideas or hints?
> /anders



More information about the Digitalmars-d-learn mailing list