提问人:MatthieuCross 提问时间:4/4/2023 最后编辑:Andrew TruckleMatthieuCross 更新时间:4/20/2023 访问量:107
使用 TinyXML2 将字符串保存在 xml 文件中
Saving a string in xml file with TinyXML2
问:
我几乎是从C++开始的,在制作一个简单的控制台程序时遇到了一个我无法解决的问题。我到处寻找解决方案,但没有找到,所以我会试着问。
我想用 将数据从字符串保存到 xml 文件中,但它只需要数组。SetText()
char
我有一个 for “person”,看起来像这样:struct
struct person {
int Id = 0;
string Name;
char cname[20];
string LastName;
char clastname[20];
int Age;
};
输入人员后,我可以保存为 XML。通过循环,我拯救了每个人。for
此代码来自一个循环。for
//save name
string pName = p.Name;
XMLElement* pername = doc.NewElement("pname");
pername->SetText(p.cname);
pers->InsertEndChild(pername);
它工作正常。但是在加载时,它只填充字符串,而不是 .因此,再次保存时,加载的人员姓名未正确保存。Name
char cname
这就是我加载名称的方式......
XMLElement* p_name = p_person->FirstChildElement("pname");
string pname = p_name->GetText();
nPerson.Name = pname;
所以我正在考虑 2 种不同的解决方案。
- 直接从字符串 Name 保存,并从 person 结构中完全删除 cname。
- 加载时,以某种方式将字符串转换为 char 数组,这样我就可以毫无错误地重新保存。
我希望这个问题是可以理解的。我很抱歉,但英语不是我的第一语言:)
我尝试在保存之前将字符串转换为数组...char
const int namelength = pName.length();
char* char_array_name = new char[namelength + 1];
char_array_name[namelength] = '\0';
for (int i = 0; i < namelength; i++)
{
char_array_name[i] = pName[i];}
pername->SetText(char_array_name);
...但它只保存名称的第一个字母。
我尝试在加载后进行转换,但也无法完成。在发布问题之前,我花了很多时间,但正如我所说。我是初学者,所以也许答案是显而易见的,我只是看不到。
解决
只需使用 .这将返回一个 .
作为一个初学者,我把事情搞得太复杂了。一个切中要害的答案帮助我得到了它。再次感谢 user20716902 :)pName.c_str()
const char *
答: 暂无答案
评论
pName.c_str()
const char *
c_str()
pName
cname
cname