в соответствии со ссылкой на класс TixmlText принимает значения const char * в качестве входных данных.Мне нужно хранить целочисленные данные, прочитанные из текстового файла в XML.целочисленные данные хранятся в int vector, и каждый элемент вектора преобразуется в const char * перед передачей его в текстовую функцию Tixml.
const char* intToXmlChar(int num)
{
stringstream abc;
string value;
abc<<num;
value=abc.str();
const char* ret_val = value.c_str();
//char* conv_val = const_cast<char*>(ret_val);
return ret_val;
}
Но когда я наконец вижу сгенерированный документ XML.я получаю значения мусора в элементе, где я сохраняю число
<timestamp>1�504</timestamp>
как правильно хранить целочисленные данные?
я проследил, где произошла проблемадо некоторой степени в tinyxml.h
class TiXmlNode : public TiXmlBase
функция
void SetValue(const char * _value) {
printf(" pre ---number--- %s using this \n",_value); //-- if the value is say 18504
value = _value;
printf(" post ---number--- %s using this \n",_value); //-- becomes 1�504 saved in xml
}
, где значение совпадает class TiXmlNode
, равное TIXML_STRING value;
- Вопрос: Я что-то упускаю очень просто?
- Вопрос: Как правильно хранить целочисленные данные
Редактировать: Спасибо за ответы из документов, пункт, который я пропустил. Используйте время компиляции:
TIXML_USE_STL
для компиляции одной или другой версии.Это может быть передано компилятором или задано в качестве первой строки «tinyxml.h».
Примечание. При компиляции тестового кода в Linux установка переменной окружения TINYXML_USE_STL = YES / NO будет управлять компиляцией STL.,В файле проекта Windows указаны цели STL и не STL.В вашем проекте , вероятно, проще всего добавить строку "#define TIXML_USE_STL" в качестве первой строки tinyxml.h.
Tinyxml class ref