创建多个 txt 文件以在 c++ 中存储数据
Creating multiple txt files to store data in c++
我有一个对象数组,每个对象都有一些数据成员。我想做的只是为每个对象创建一个文件来存储数据。这可能吗?例如,我有一个包含 10 个对象的数组,第一个对象的数据必须存储在 data01 中.txt第二个对象的数据必须存储在 data02 中.txt等等(不需要示例中使用的文件名格式,任何文件名都可以)。提前谢谢。
你只需要编写一个函数:
std::string serializeObject(const XClass &object);
它将对象的数据表示为字符串。然后例行将序列化对象写入文件:
std::ofstream outFile;
for (...
outFile.open(sFileName);
outFile << serializeObject(..
你的问题有点缺乏细节,但我假设你想将数组中的类对象保存到磁盘。
如果这种理解是正确的,那么解决方案似乎并不难。
我建议使用 boost::serialize 将类保存到磁盘 (http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/index.html)
至于您的迭代过程,这里有一个可能会有所帮助的示例:
#include <string>
#include <vector>
#include <boost/shared_ptr.hpp>
#include <boost/scoped_array.hpp>
class PrettyPetunia
{
public:
PrettyPetunia(){;}
~PrettyPetunia(){;}
private:
std::string _myName;
};
typedef boost::shared_ptr<PrettyPetunia> PrettyPetuniaPtr;
typedef std::vector<PrettyPetuniaPtr> PrettyPetunias;
typedef PrettyPetunias::iterator PrettyPetuniasItr;
void SaveClassObjectOutToDisk(const char* fileName, PrettyPetuniaPtr classObjectToSave);
void IterateArrayToSaveToDisk(PrettyPetunias& petunias)
{
unsigned int loopCounter = 0;
for (PrettyPetuniasItr itr = petunias.begin(); itr != petunias.end(); ++itr )
{
boost::scoped_array<char> fileName ( new char[1024] ); // 1024 or PATH_MAX, your choice
sprintf(fileName.get(), "data%d02.txt", loopCounter);
PrettyPetuniaPtr ptr = (*itr);
SaveClassObjectOutToDisk(fileName.get(), (*itr) );
}
}
void SaveClassObjectOutToDisk(const char* fileName, PrettyPetuniaPtr classObjectToSave)
{
// ...
}
如果您有兴趣将 there 文件用于各种 Web 应用程序,您可以使用 JSON 格式:http://en.wikipedia.org/wiki/Json
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Boost和Poco都可以处理这种格式的敌人示例。
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 在std::vector上存储带有模板的类实例
- 谷歌测试中的期望值存储在哪里
- 为什么C中的通用链表中存储的数据已损坏
- 在c++中获取两个大int,并将它们存储在数组中
- 在reactor中存储eventHandlers的最佳方式是什么