在 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_t
和 int
具有相同的大小,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 是一个可能的解决方案。
我正在尝试将一个 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_t
和 int
具有相同的大小,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 是一个可能的解决方案。