社区
C++ 语言
帖子详情
怎么从文本生成对象?
胖和尚minifat
2003-09-13 03:02:54
我现在想从一个文本生成一系列对象。文本的内容包括了对象的名字和属性名字,类型,属
性值。由于对象类型和属性都比较多。。。不知道该怎么写这个程序,还望热心人帮忙。
...全文
40
6
打赏
收藏
怎么从文本生成对象?
我现在想从一个文本生成一系列对象。文本的内容包括了对象的名字和属性名字,类型,属 性值。由于对象类型和属性都比较多。。。不知道该怎么写这个程序,还望热心人帮忙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Skt32
2003-09-13
打赏
举报
回复
呵呵,比较容易。 看看下面这个就明白了。
VC/Delphi工程解析器源代码 详细信息 < 字符串处理 >
本代码可以读取VC/Delphi的工程文件进行解析。
[代码性质] VC完整应用程序代码
[代码作者] 李晓飞
[文件大小] 151K
http://www.vckbase.com/document/viewdoc.asp?id=569
[更新日期] 2003-3-4 19:29:00
[下载次数] 2794
http://www.vckbase.com/code/downcode.asp?id=1810
mikeshi
2003-09-13
打赏
举报
回复
其实,这个东东分析下来,需要以下几个步骤:
一、需要一个方法来读取数据
二、需要一个容器来存放新生成的对象,Yssss1980(浪子雪影) 好像是用vector的吧,其实其他的容器也可以,像QT里好像是使用Stack来装的。BTW,你和我同岁,呵呵呵呵
三、容器里如果存放的是指针还方便一点,如果要存放对象的复制品,那就麻烦点了,需要一种叫做代理类的类(C++里沉思录里有描述,本人也没有看的太明白,呵呵)
Yssss1980
2003-09-13
打赏
举报
回复
排版不太好,估计没人看得懂
赫赫,别人都说我写程序可读性不是很强,不好懂
Yssss1980
2003-09-13
打赏
举报
回复
呵,我这里刚好有一个实现,给你看看吧
//Module.h
#if !defined _MODULE_H
#define _MODULE_H
#include <vector>
#include <string>
#define DECLARE_MODULE(module_name) \
public: \
static CModule* NewInstance(){ return new module_name;}; \
static CModuleManager::stModuleDefine s_clMD;
#define IMPLEMENT_MODULE(module_name) \
CModuleManager::stModuleDefine module_name::s_clMD(#module_name,&(module_name::NewInstance));
using namespace std;
class CModule
{
public:
CModule(){};
virtual ~CModule(){};
virtual void Start()=0;
virtual void Stop()=0;
virtual void DispatchMessage(DWORD msg)=0;
};
typedef CModule* (*CreateFn)(void);
class CModuleManager
{
public:
struct stModuleDefine
{
stModuleDefine(const char *pstrModuleName,CreateFn pfnCreate)
{
this->m_strModuleName=pstrModuleName;
this->m_pfnCreate=pfnCreate;
vector<stModuleDefine>& theVector=GetModuleDefineVector();
theVector.push_back(*this);
}
string m_strModuleName;
CreateFn m_pfnCreate;
};
static CModule* CreateModule(const char *pstrModuleName)
{
vector<stModuleDefine>& theVector=GetModuleDefineVector();
int vSize=theVector.size();
for(int i=0;i<vSize;i++)
{
if(theVector[i].m_strModuleName==pstrModuleName)
{
return theVector[i].m_pfnCreate();
}
}
return 0;
};
static vector<stModuleDefine>& GetModuleDefineVector()
{
static vector<stModuleDefine> s_clModuleDefineVector;
return s_clModuleDefineVector;
}
};
#endif
//Test.cpp
#include "Module.h"
#include <iostream>
class CTestModule:public CModule
{
DECLARE_MODULE(CTestModule)
public:
CTestModule(){}
virtual ~CTestModule(){}
virtual void Start(){cout<<"CTestModule start"<<endl;}
virtual void Stop(){cout<<"CTestModule Stop"<<endl;}
virtual void DispatchMessage(DWORD msg){cout<<"CTestModule DispatchMessage"<<endl;}
};
IMPLEMENT_MODULE(CTestModule)
class CTestModule2:public CModule
{
DECLARE_MODULE(CTestModule2)
public:
CTestModule2(){}
virtual ~CTestModule2(){}
virtual void Start(){cout<<"CTestModule2 start"<<endl;}
virtual void Stop(){cout<<"CTestModule2 Stop"<<endl;}
virtual void DispatchMessage(DWORD msg){cout<<"CTestModule2 DispatchMessage"<<endl;}
};
IMPLEMENT_MODULE(CTestModule2)
int main()
{
CModule *m=CModuleManager::CreateModule("CTestModule2");
m->Start();
return 0;
}
////////////over
基本上是学MFC
不过稍微简化了一点
ningzhiyu
2003-09-13
打赏
举报
回复
看见过类似的实现……不过我自己也不是很清楚(主要是没有认真看完)
大概是这样的思路:
创建一个类,成员如下:
名称:char* name;
属性:采用void*的指针,同时用一个变量用于记录该指针的指向类型。
(如果属性多,可以考虑用二重指针,记住每个指针都应该有个记录其类型的变量,方便以后的操作)
假设文本数据如下:(只有一个属性的)
objectname:ob1#propertyname:p1#valuetype:int#value:10#
objectname:ob2#propertyname:p1#valuetype:long#value:10#......
可以先建立一个enum来记录可能的属性类型
如:
enum valueType{
value_int,
value_long,
value_char,
...
}
建立类
class ObjT {
const char * str_objName;
void * m_valueAddress;
valueType m_valueType;
}
读入文本数据以后,每读入一个objectname就申请一个对象的内存,其指针存放可以用数组也可以用链表(看你的爱好了),根据文本的说明提示,申请适合大小的内存,把void*指针指向它就是了,并记录相应的类型,(方便后来的运算操作)。
如果是多个属性,可能直接为属性建立一个类或者结构方便解,然后再ObjT中放置相应的二重指针(一重指针的话就要使用链表了吧)。
简单说就是这样了。
期间涉及关键词的比较,分界符的辨识,各种类型的值的读取……都是对字符串的操作了。
xghost
2003-09-13
打赏
举报
回复
MFC中有对象系列化的一对宏可以这样做
JAVA_API1.6文档(中文)
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记
生成
器、随机数
生成
器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...
java读取
文本
数据,
生成
java
对象
java读取
文本
数据,
生成
java
对象
最近项目有遇到一个需求,其他系统会定时
生成
一批
文本
文件放到FTP中,我们所做的这个项目则定时从ftp中下载
生成
的文件,将其解析并保存到数据库中。需要解析的
文本
文件格式是...
文本
生成
图像工作简述3--技术难点、研究意义、应用领域和目前的局限性
文本
生成
图像指的是使用人工智能技术将
文本
转换为图像的过程,其可以根据给定
文本
生成
符合描述的真实图像,其是多模态机器学习的任务之一,
文本
生成
图像的技术难点主要有两个: - 如何捕捉
文本
和图像之间的复杂关系...
图片、
文本
、文件如何在线
生成
二维码?
可以点击上传图片,可以上传多张来进行图片拼接,选择图片样式和排列样式,比如图片样式留白,排列样式轮播,那么点击
生成
后,扫码就会...是必不可少的,下面给大家分享一下文件,
文本
,图片三种二维码制作的方法。...
文本
生成
图像简要回顾 text to image synthesis
文本
生成
图像作为近几年的热门研究领域,其解决的问题是从一句描述性
文本
生成
与之对应的图片。近一周来,我通过阅读了近几年发表于顶会的近10篇论文,做出本文中对该方向的简要报告。报告中主要阐述了近几年最流行的...
C++ 语言
64,681
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章