在UNICODE环境下由CSteing转换为string的方法
比如在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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)