I’m writing a little wrapper for an application that uses files as arguments.
The wrapper needs to be in Unicode, so I’m using wchar_t for the characters and strings I have. Now I find myself in a problem, I need to have the arguments of the program in a array of wchar_t’s and in a wchar_t string.
Is it possible? I’m defining the main function as
int main(int argc, char *argv[])
Should I use wchar_t’s for argv?
Thank you very much, I seem not to find useful info on how to use Unicode properly in C.
In general, no. It will depend on the O/S, but the C standard says that the arguments to ‘main()’ must be ‘main(int argc, char **argv)’ or equivalent, so unless char and wchar_t are the same basic type, you can’t do it.
Having said that, you could get UTF-8 argument strings into the program, convert them to UTF-16 or UTF-32, and then get on with life.
On a Mac (10.5.8, Leopard), I got:
That’s all UTF-8 encoded. (odx is a hex dump program).
See also: Why is it that UTF-8 encoding is used when interacting with a UNIX/Linux environment