使用C ++在xml之间插入标记

时间:2011-03-27 06:45:09

标签: c++ xml

我有一个xml,我希望使用string类的insert()插入标记。

这是我的xml:

< ? xml version="1.0" ? >
< Dependency_Structure >
   < Main_Package >
      < Package_Name >
         WinTools
      < /Package_Name >
      < Header_File >
         WinTools.h
      < /Header_File >
      < Implementation_File >
         WinTools.cpp
      < /Implementation_File >
   < /Main_Package >
   < Dependencies >
      < Dependency_Package >
         wintools
      < /Dependency_Package >
   < /Dependencies >
< /Dependency_Structure >

这是我的功能代码,每当我尝试执行它时就会中止程序的执行:

std::string line,str;

std::fstream myfile(xmlFileName, ios::out | ios::in);
//myfile.open()
 if(myfile.is_open())
 {
        getline(myfile,line);
        size_t pos=line.find("</Dependency_Package >");
        line.insert(pos,fileInput);

 }
 else
    std::cout<<"Unable to open the file. "<<endl;
myfile.close();

2 个答案:

答案 0 :(得分:0)

两件事。首先,您没有测试查找结果以查看位置是大于还是等于零。其次,如果要插入并保存回文件,则在插入之前关闭文件。

答案 1 :(得分:0)

您的错误是尝试写入而不是写入文件本身。

line 是您刚读过的字符串。这是您可以写入文件的方式:

// Move the write cursor where read cursor is currently located 
// (or wherever you want it to be)
myfile.seekp(myfile.tellg());
myfile << "<CheckThisTag>\n\t YEAH BABY\n<\\CheckThisTag>\n";