在 C 中将 wchar_t 数组转换为 int 数组

convert wchar_t array into int array in C

我正在尝试将一个 wchar_t 数组转换为一个 int 数组,该数组包含 C 中每个 wchar_t 元素的编码。我知道我可以像下面的代码一样通过循环来做到这一点,有没有其他不使用循环的方法可以大大提高性能?

 for(int i=0; i< filesize; i++){
    t[i] = (int)p[i];   //t is an int array, p is a wchar_t array
}

假设 wchar_tint 具有相同的大小,memcpy 可能就是您想要的。

#include <string.h>
#include <wchar.h>

int main(void)
{
    _Static_assert(sizeof (int) == sizeof (wchar_t), "This won't work");
    wchar_t warr[3] = {L'a', L'b', L'c'};
    int iarr[3] = {0};
    memcpy(iarr, warr, sizeof warr);
    // iarr now holds the same contents as warr
}

没有。在那种情况下,没有真正的替代方案(至少如果您考虑到可移植性)。否则 mediocrevegetable1 是一个可能的解决方案。