【发布时间】:2016-07-03 22:09:41
【问题描述】:
我有一个函数需要 wchar_t 数组作为参数。我不知道标准库函数可以将 char 转换为 wchar_t 所以我写了一个快速脏函数,但我想要一个没有错误和未定义行为的可靠解决方案。标准库是否有进行这种转换的函数?
我的代码:
wchar_t *ctow(const char *buf, wchar_t *output)
{
const char ANSI_arr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()-_=+[]{}\\|;:'\",<.>/? \t\n\r\f";
const wchar_t WIDE_arr[] = L"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()-_=+[]{}\\|;:'\",<.>/? \t\n\r\f";
size_t n = 0, len = strlen(ANSI_arr);
while (*buf) {
for (size_t x = 0; x < len; x++) {
if (*buf == ANSI_arr[x]) {
output[n++] = WIDE_arr[x];
break;
}
}
buf++;
}
output[n] = L'\0';
return output;
}
【问题讨论】:
标签: c arrays type-conversion ansi widestring