我有一个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();
答案 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";