将文件转储到字符串数组中
Dumping a File into a String Array
我正在使用Visual c++与MFC程序,使用Visual Studio 2008,我将创建或追加到XML文件。
如果文件不存在,它将被创建,没有问题,但是当文件已经存在并且我必须附加到它时,似乎有一个问题。
我被指示,并通过一些研究发现,是读文件成一个字符串,备份一点,写到字符串的末尾。我的想法是将文件读入字符串数组。
bool WriteXMLHeader(string header, ofstream xmlFile)
{
int fileSize = 1;
while(!xmlFile.eof())
{
fileSize++;
}
string entireFile[fileSize];
for(int i = 0; i < fileSize; i++)
{
xmlFile >> entireFile[i];
}
//Processing code to add more to the end
//Save the File
return true;
}
然而,这会导致一个错误,其中完整文件是未知大小,并有常数错误弹出。
我不允许使用任何第三方软件(已经研究过TinyXML和RapidXML)。
在XML文件末尾添加未知数量的结束标记的更好方法是什么?
编辑:我的老板一直在谈论发送到节点的路径,并在节点的最后一个实例之后写入。他希望它能够在需要时处理具有一百万缩进的xml文件。(一个人不可能完成?)
-
std::vector < std::string>
"我提到过,但我的老板说不行,我要专注于字符串"
这是最受欢迎,最简单,最不容易出错的解决方案。抛开你的xml解析(如果有的话),不管它是什么问题/困惑。
考虑以下:
#include <vector>
#include <string>
//...
std::vector < std::string > entireFile;
while ( std::getline(xmlFile, line) )
{
entireFile.push_back( line ) ;
}
xmlFile.close( );
// entireFile now contains all lines from xml file.
// To iterate its just like simple array
for( std::size_t i = 0; i < entireFile.size( ); ++i )
{
// entireFile[i]
}
注意:使用<algorithm>
和<iterators>
,您可以在更少的代码行中实现这一点。
建议阅读:为什么循环条件中的iostream::eof被认为是错误的?
如果你的老板说不,礼貌地问他为什么,为什么?除非您厌倦了功能有限的特定环境/平台,否则不可能有任何正当的理由。相关文章:
- 使用 jsoncpp 解析 json 数组字符串
- C++ 对象数组字符串输入在控制台上不起作用
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 无法区分 JSON 对象/数组/字符串
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何使用数组字符串进行输入验证
- (C++) 打印字符数组字符串的单词时出现问题
- 使用Back_inserter从任何位置的输入字符中使用Back_inserter进行过滤数组字符串
- C 函数反转字符数组字符串
- 如何在 c++ 中创建数组(字符串 [] )的向量
- 如何返回数组字符串的指针
- char数组字符串混淆
- 如何从字符数组字符串中提取空格
- 是否可以将 Bitset<8> 的值复制到数组字符串而不转换它们?
- C++数组字符串函数
- 如何在函数中操作字符数组(字符串)的指针,该指针在C / C ++中作为参数传递
- visual将音频文件存储到数组/字符串流C++中
- c++在char数组(字符串)上将what替换为
- 将数组字符串转换为intger c++(初学者)
- 需要设置数组字符串长度,使其恰好为13