xxxxxxxxxx
import std.stdio;
import core.stdc.stdio : puts;
import core.stdc.string : strlen;
void main()
{
string s;
s = "D string";
auto c_string = toStringz( s );
//
writeln( "D string: ", s );
write ( "C string: " ); puts( c_string );writeln();
//
writeln( "D string length: ", s.length );
writeln( "C string length: ", strlen( c_string ) );
}
immutable(char)* toStringz( ref string s )
{
if ( s.capacity <= s.length )
s.reserve( s.length + 1 );
char* cptr = cast( char* ) s.ptr; // C ptr
char* zptr = cptr + s.length; // zero ptr
*zptr = '\0';
return cast( immutable(char)* ) cptr;
}