У меня есть библиотека, которая содержит XML файл по умолчанию, представленный как const char *
хранящийся в байтах.
Я хочу, чтобы пользователь мог запросить дескриптор этого файла (в виде документа TiXmlDocument).
В настоящее время я пытаюсь сделать это, передав эту строку defaultFile
(ее определение в собственном заголовочном файле) в файл TiXmlDocument.Parse()
. Parse()
передает мне указатель на мусор (но не null), который вызывает сбой при попытке вызвать SaveFile()
.
Я могу обойти это, написав тот же defaultFile
в файле, используя:
FILE *file;
file = fopen("temp.prme", "w");
fprintf(file, "%s", defaultParameterFile);
fclose(file);
Я создаю новый TiXmlDocument
используя конструктор, который принимает путь к файлу в качестве входного. Это работает, но это не реальный вариант, потому что я не хочу сохранять файлы на компьютере пользователя.
Из того, что я могу сказать, все, что делает конструктор, это чтение строки из файла, а затем отправка ее прямо в Parse()
. Я проверил значения, которые передавались в памяти, и обнаружил очень мало различий.
При использовании метода-конструктора вы должны затем cal LoadFile()
. В LoadFile()
строка, передаваемая в Parse()
была завершена нулем. Хотя defaultFile
был. Кроме того, все новые строки (которые в defaultFile
были перечислены как /r/n
, были перечислены как \n\n
.
Я попробовал изменить defaultFile
чтобы соответствовать тому, что я видел у конструктора, и не повезло. Какие-либо предложения?
Для чего его ценность, defaultFile
выкладывается примерно так:
const char defaultFile[] = {
/* 0x00000000 */ 0x3C, 0x3F, 0x78, 0x6D,
...
};
Это примерно 9000 строк в длину, по 16 байт на строку.
При непосредственном вызове в Parse()
я TiXmlDocument
в стеке. Данные были повреждены другими вызовами функций. Я исправил это, и все сработало.
Parse()
. И что это за конструктор, который загружает файл?