Я пытаюсь использовать tpl для сериализации структур, содержащих строки wchar_t *.Сериализация wchar_t * в структуре с TPL
код у меня выглядит так, и это не работает:
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <wchar.h>
#include "tpl.h"
struct chinese_t {
wchar_t *chars;
};
int main() {
tpl_node *tn;
struct chinese_t cstr;
cstr.chars = L"字符串";
tn = tpl_map("S(s)", &cstr);
tpl_pack(tn, 0);
tpl_dump(tn, TPL_FILE, "string.tpl");
tpl_free(tn);
struct chinese_t cstr2;
tn = tpl_map("S(s)", &cstr2);
//tpl_load(tn, TPL_MEM, buffer, len);
tpl_load(tn, TPL_FILE, "string.tpl");
tpl_unpack(tn, 0);
tpl_free(tn);
printf("%ls\n", cstr2.chars);
return;
}
Если я заменить китайский «字符串» строку «1234» он просто печатает «1» - если я изменить так что структура пользователей char * (и я просто нажимаю на них символы ASCII), она работает нормально. Однако я не могу понять, как правильно его сериализовать и десериализовать строки wchar_t *.
Ах, я пропустил часть документов, которые говорили о том, как назначить какой из неограниченных массивов в структуре, которую вы добавляли. Спасибо за ответ! –