I have a main() on Linux that receives command line arguments as char**
int main(int argc ,char * argv[])
In my cross platform program I want to use the command line arguments as char16_t. Therefore I need to convert char->char16_t. How do I do that? I tried this but once I leave the loop my debugger shows strange characters in the array. What did I do wrong?
//u16String <- string
std::u16string u16string_from_string(std::string const str) {
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter;
return converter.from_bytes(str);
}
bool convert_argv_to_char16(int argc,char * argv[]){
char16_t * argv16[argc];
int i=0;
// for each arg
for (char **arg = argv; *arg; ++arg) {
std::string S(*arg);
std::u16string S16 = u16string_from_string(S);
const char16_t* cc_16 = S16.c_str();
char16_t* c_16 = (char16_t*) cc_16;
argv16[i] = c_16;
i++;
}
return true;
}