digitalmars.D - [][] to **
- Lucas Goss (14/14) Mar 23 2006 How can I convert char[][] to char**?
- Jarrett Billingsley (27/35) Mar 23 2006 Well, it's can't really be directly done. In D, you can easily convert ...
- Lucas Goss (2/7) Mar 23 2006 Ah. Thanks! :D
How can I convert char[][] to char**?
In C I can just do:
int main(int argc, char** argv)
{
someFunc(args);
return 0;
}
But I'm drawing a blank for how to do that in D...
int main(char[][] args)
{
someFunc(???)
return 0;
}
// someFunc(char** val)
Mar 23 2006
"Lucas Goss" <lgoss007 gmail.com> wrote in message
news:dvvhdt$2qe3$1 digitaldaemon.com...
How can I convert char[][] to char**?
But I'm drawing a blank for how to do that in D...
int main(char[][] args)
{
someFunc(???)
return 0;
}
// someFunc(char** val)
Well, it's can't really be directly done. In D, you can easily convert a
char[] to a char*, but since a char[][] is an array of _D_ arrays of
characters, you wouldn't be able to just cast it to a char**.
Instead, you'll have to do it manually:
import std.stdio;
import std.string;
char** stringsToCharz(char[][] arr)
{
char** s = new char*[arr.length];
foreach(uint i, char[] string; arr)
s[i] = toStringz(string);
return s;
}
void main()
{
char[][] strings = new char[][2];
strings[0] = "hi";
strings[1] = "bye";
char** C = stringsToCharz(strings);
for(uint i = 0; i < strings.length; i++)
printf("%s\n", C[i]);
}
I'm assuming that the function that you want to pass this char** to is a
C-style function, and as thus, I've used toStringz() in order to make the
strings null-terminated.
Mar 23 2006
Jarrett Billingsley wrote:Well, it's can't really be directly done. In D, you can easily convert a char[] to a char*, but since a char[][] is an array of _D_ arrays of characters, you wouldn't be able to just cast it to a char**. Instead, you'll have to do it manually:Ah. Thanks! :D
Mar 23 2006








Lucas Goss <lgoss007 gmail.com>