argv[]
中的参数是UTF-8编码的。我想做点什么:
#include <wstring>
#include <???>
void doWhatever(wstring &ws);
using ???;
int main(int argc, char *argv[])
{
while (--argc)
{
// Convert argv to wstring
wstring ws = ???(argv[argc]);
doWhatever(ws);
}
return EXIT_SUCCESS;
}
???
我不知道。我确信这对C ++人来说是微不足道的,但搜索它只会带来很多噪音。
答案 0 :(得分:1)
这是一个非常好的问题! : - )
正如Maxim所写:mbstowcs()
wsprintf(),带有“%S”(资本“S”)。在wsprintf()中,“S”表示多字节字符串(在sprintf()中,“S”表示宽字符)。
您可以使用std :: wstring_convert并选择UTF-8编码。我认为它的“codecvt_utf8_utf16”
对于Windows:
WINAPI中的MultiByteToWideChar()
如果使用SetClipboardData()使用CF_TEXT将ASCII文本设置为剪贴板,则Windows允许您使用GetClipboardData()为CF_UNICODETEXT进行转换!
您也可以通过在2个ASCII字符之间添加“NULL”来手动执行硬核(并且仅在某些情况下工作)。
现在这一切都浮现在脑海中: - )
答案 1 :(得分:0)