比如在MFC下用TinyXml写xml文件时编辑的代码
try
{
TiXmlDocument *myDocument = new TiXmlDocument();
TiXmlElement *RootElement = new TiXmlElement("Persons");
myDocument->LinkEndChild(RootElement);
TiXmlElement *PersonElement = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement);
PersonElement->SetAttribute("ID", "1");
PersonElement->SetAttribute("other", "info");
TiXmlElement *NameElement = new TiXmlElement("name");
TiXmlElement *AgeElement = new TiXmlElement("age");
PersonElement->LinkEndChild(NameElement);
PersonElement->LinkEndChild(AgeElement);
TiXmlText *NameContent = new TiXmlText("Michael");
TiXmlText *AgeContent = new TiXmlText("23");
NameElement->LinkEndChild(NameContent);
AgeElement->LinkEndChild(AgeContent);
CString appPath = GetAppPath();
string seperator = "\\";
string fullPath = appPath.GetBuffer(0) + seperator + szFileName;
myDocument->SaveFile(fullPath.c_str());
delete myDocument;
}
catch (string& e)
{
return false;
}
return true;
上面这个代码给我报错,经查询是CString需要转换为string类型,经查询网上给的可行转换方法如下:
CString src = _T("你好");
CStringA temp = src.GetBuffer(0);
string text = temp.GetBuffer(0);
但是在有些情况下还是会报同样的错,和没转换一个样,这个问题需要将上面的代码改写,改写为:
CString src;
CStringA temp;
string text;
src = _T("你好");
temp = src.GetBuffer(0);
text = temp.GetBuffer(0);
及改后代码为:
try
{
TiXmlDocument *myDocument = new TiXmlDocument();
TiXmlElement *RootElement = new TiXmlElement("Persons");
myDocument->LinkEndChild(RootElement);
TiXmlElement *PersonElement = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement);
PersonElement->SetAttribute("ID", "1");
PersonElement->SetAttribute("other", "info");
TiXmlElement *NameElement = new TiXmlElement("name");
TiXmlElement *AgeElement = new TiXmlElement("age");
PersonElement->LinkEndChild(NameElement);
PersonElement->LinkEndChild(AgeElement);
TiXmlText *NameContent = new TiXmlText("Michael");
TiXmlText *AgeContent = new TiXmlText("23");
NameElement->LinkEndChild(NameContent);
AgeElement->LinkEndChild(AgeContent);
CString appPath;
CStringA temp;
string appPathtext;
appPath = GetAppPath();
temp = appPath.GetBuffer(0);
appPathtext = temp.GetBuffer(0);
string seperator = "\\";
string fullPath = appPathtext + seperator + szFileName;
myDocument->SaveFile(fullPath.c_str());
delete myDocument;
}
catch (string& e)
{
return false;
}
return true;