char* XmlBook::CstrTochar(CString Cstr)
{
char* result;
wchar_t* tmp;
_tcscpy(tmp, Cstr);
int nLen = wcslen(tmp) + 1;
WideCharToMultiByte(CP_ACP, 0, tmp, nLen, result, 2 * nLen, NULL, NULL);
return result;
}TiXmlElement* XmlBook::AddOneNode(CString nodename, CString nodetext)
{
TiXmlElement* result = new TiXmlElement(CstrTochar(nodename));
TiXmlText* text = new TiXmlText(CstrTochar(nodetext));
result->LinkEndChild(text);
return result;
}void XmlBook::SaveToFile(Book pBook, CString route)
{
for(int i = 0; i != pBook.bVec.size(); i++)
{
TiXmlElement* gNode = new TiXmlElement(CstrTochar(pBook.bVec[i].groupname));
for(int j = 0; j != pBook.bVec[i].gVec.size(); j++)
{
TiXmlElement* name = new TiXmlElement(CstrTochar(pBook.bVec[i].gVec[j].name));
TiXmlElement* sex = AddOneNode("sex", pBook.bVec[i].gVec[j].sex);
TiXmlElement* work = AddOneNode("work", pBook.bVec[i].gVec[j].work);
TiXmlElement* comphone = AddOneNode("comphone", pBook.bVec[i].gVec[j].comphone);
TiXmlElement* mobilephone = AddOneNode("mobilephone", pBook.bVec[i].gVec[j].mobilephone);
TiXmlElement* homephone = AddOneNode("homephone", pBook.bVec[i].gVec[j].homephone);
TiXmlElement* company = AddOneNode("company", pBook.bVec[i].gVec[j].company);
TiXmlElement* email = AddOneNode("email", pBook.bVec[i].gVec[j].email);
TiXmlElement* page = AddOneNode("page", pBook.bVec[i].gVec[j].page);
TiXmlElement* address = AddOneNode("address", pBook.bVec[i].gVec[j].address);
TiXmlElement* zipcode = AddOneNode("zipcode", pBook.bVec[i].gVec[j].zipcode);
TiXmlElement* info = AddOneNode("info", pBook.bVec[i].gVec[j].info);
name->LinkEndChild(sex);
name->LinkEndChild(work);
name->LinkEndChild(comphone);
name->LinkEndChild(mobilephone);
name->LinkEndChild(homephone);
name->LinkEndChild(company);
name->LinkEndChild(email);
name->LinkEndChild(page);
name->LinkEndChild(address);
name->LinkEndChild(zipcode);
name->LinkEndChild(info);
gNode->LinkEndChild(name);
}
xDoc->LinkEndChild(gNode);
}
xDoc->SaveFile(CstrTochar(route));
}我改成现在这样子 但是在保存目录下没有文件
然后我试着用 xDoc->SaveFile("text.xml")代替 结果文件里面都是单字符的  
比如 应该显示abc的地方它只有a一个字符

解决方案 »

  1.   

    问题找到了
    CstrTochar改成一下
    char* XmlBook::CstrTochar(CString Cstr)
    {
    wchar_t* tmp;
    _tcscpy(tmp, Cstr);
    DWORD dwSize = WideCharToMultiByte(CP_OEMCP, NULL, tmp, -1, NULL, 0, NULL, FALSE);
    char* result = new char[dwSize];
    WideCharToMultiByte(CP_OEMCP, NULL, tmp, -1, result, dwSize, NULL, FALSE);
    return result;
    }
    测试通过现在还不能关贴 要分的速度进来
      

  2.   

    是不是因为ASCI和UNICODE的设置的原因?
      

  3.   

    为什么不用cup类写xml文件这个通俗易懂。