クラス参照に従って、TixmlText は const char* 値を入力として受け取ります。テキスト ファイルから読み取った整数データを xml に格納する必要があります。整数データは int ベクトルに格納され、ベクトルの各要素は 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 の最初の行として追加するのがおそらく最も簡単です。