C++ 创建多个txt文件以将数据存储在c++;
我有一个对象数组,每个对象都有一些数据成员。我只想为每个对象创建一个文件来存储数据。这可能吗?例如,我有一个10个对象的数组,第一个对象的数据必须存储在data01.txt中,第二个对象的数据必须存储在data02.txt中,等等(示例中使用的文件名格式不需要,任何文件名都可以)。提前感谢。您只需编写一个函数:C++ 创建多个txt文件以将数据存储在c++;,c++,c,file,visual-c++,file-handling,C++,C,File,Visual C++,File Handling,我有一个对象数组,每个对象都有一些数据成员。我只想为每个对象创建一个文件来存储数据。这可能吗?例如,我有一个10个对象的数组,第一个对象的数据必须存储在data01.txt中,第二个对象的数据必须存储在data02.txt中,等等(示例中使用的文件名格式不需要,任何文件名都可以)。提前感谢。您只需编写一个函数: std::string serializeObject(const XClass &object); 它将对象的数据表示为字符串。 然后定期将序列化对象写入文件: std::o
std::string serializeObject(const XClass &object);
它将对象的数据表示为字符串。
然后定期将序列化对象写入文件:
std::ofstream outFile;
for (...
outFile.open(sFileName);
outFile << serializeObject(..
std::排液管;
对于(。。。
outFile.open(sFileName);
outFile您只需编写一个函数:
std::string serializeObject(const XClass &object);
它将对象的数据表示为字符串。
然后定期将序列化对象写入文件:
std::ofstream outFile;
for (...
outFile.open(sFileName);
outFile << serializeObject(..
std::排液管;
对于(。。。
outFile.open(sFileName);
outFile您的问题有点缺乏细节,但我假设您希望将数组中的类对象保存到磁盘
如果这种理解是正确的,那么解决方案似乎并不难
我建议使用boost::serialize将类保存到磁盘()
对于您的迭代过程,以下是一个可能有帮助的示例:
#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)
{
// ...
}
#包括
#包括
#包括
#包括
前突类
{
公众:
PrettyPetunia(){;}
~PrettyPetunia(){;}
私人:
std::string_myName;
};
typedef boost::shared_ptr pretypetuniaptr;
typedef std::向量PrettyPetunias;
typedef PrettyPetunias::迭代器PrettyPetuniasItr;
void SaveClassObjectOutToDisk(const char*fileName,PrettyPetuniaPtr classObjectToSave);
void iteratearlaytosavetodisk(前型突尼斯和矮牵牛花)
{
无符号整数循环计数器=0;
for(PrettyPetuniasItr itr=penunias.begin();itr!=penunias.end();+itr)
{
boost::作用域数组文件名(新字符[1024]);//1024或PATH_MAX,由您选择
sprintf(fileName.get(),“数据%d02.txt”,循环计数器);
PrettyPetuniaPtr ptr=(*itr);
SaveClassObjectOutToDisk(fileName.get(),(*itr));
}
}
void SaveClassObjectOutToDisk(const char*fileName,PrettyPetuniaPtr classObjectToSave)
{
// ...
}
您的问题有点不够详细,但我假设您希望将数组中的类对象保存到磁盘
如果这种理解是正确的,那么解决方案似乎并不难
我建议使用boost::serialize将类保存到磁盘()
对于您的迭代过程,以下是一个可能有帮助的示例:
#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)
{
// ...
}
#包括
#包括
#包括
#包括
前突类
{
公众:
PrettyPetunia(){;}
~PrettyPetunia(){;}
私人:
std::string_myName;
};
typedef boost::shared_ptr pretypetuniaptr;
typedef std::向量PrettyPetunias;
typedef PrettyPetunias::迭代器PrettyPetuniasItr;
void SaveClassObjectOutToDisk(const char*fileName,PrettyPetuniaPtr classObjectToSave);
void iteratearlaytosavetodisk(前型突尼斯和矮牵牛花)
{
无符号整数循环计数器=0;
for(PrettyPetuniasItr itr=penunias.begin();itr!=penunias.end();+itr)
{
boost::作用域数组文件名(新字符[1024]);//1024或PATH_MAX,由您选择
sprintf(fileName.get(),“数据%d02.txt”,循环计数器);
PrettyPetuniaPtr ptr=(*itr);
SaveClassObjectOutToDisk(fileName.get(),(*itr));
}
}
void SaveClassObjectOutToDisk(const char*fileName,PrettyPetuniaPtr classObjectToSave)
{
// ...
}
如果您有兴趣将该文件用于各种web应用程序,可以使用JSON格式:
例如,两者都可以处理此格式。如果您有兴趣将此文件用于各种web应用程序,可以使用JSON格式:
例如,两者都可以处理这种格式。序列化是关键字。您应该定义如何在文本文件中表示该对象。序列化是关键字。您应该定义如何在文本文件中表示该对象。