免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3872 | 回复: 5
打印 上一主题 下一主题

[C++] 问一个模板类的实现方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-04 13:23 |只看该作者 |倒序浏览
我想定义一个类,从文件中读取数据。数据类型可能是一些基本数据类型的字符串表示

我想这样实现:
      定义一个模板类,用户在使用时传入文件中的数据类型,然后在类中有个成员函数负责解析。请问如何将这个成员函数关联到类的类型上呢?因为文件不用类型的数据需要不同的函数来读取,比如parse_to_int, parse_to_float, parse_touint64_t等

求大神指导~

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-10-04 13:33 |只看该作者
本帖最后由 linux_c_py_php 于 2013-10-04 13:33 编辑

就一个parse接口,用istream >> 就完事了,这些基础类型早就给你重载好了。
  1. template <class elem_type>
  2. class file_parser
  3. {
  4.          public:
  5.               file_parser(const char *file);
  6.               bool parse_one_element(elem_type &elem) { mIstream >> elem; if (!mIstream) return false; return true;}
  7.          private:
  8.               std::ifstream mIstream;
  9. };
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-10-04 21:20 |只看该作者
回复 2# linux_c_py_php

要是不用<<。想自己用sscanf去解析每种类型,应该怎么做呢?

   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2013-10-04 21:27 |只看该作者
boost::lexical_cast 就是楼主这个

论坛徽章:
0
5 [报告]
发表于 2013-10-04 21:40 |只看该作者
回复 4# 群雄逐鹿中原


    不想用现成的,想自己练习写一个比较简单的~

论坛徽章:
0
6 [报告]
发表于 2013-10-05 21:59 |只看该作者
你是一个文件只有一种数据还是很多种?
为什么要用模版,直接这样不好了:
  1. class Parser {
  2. public:
  3.   Parser(FILE* file);
  4.   int parse_to_int();
  5.   float parse_to_float();
  6. //...
  7. };
复制代码
难道你想的是这个?
  1. template<typename T>
  2. class Parser;

  3. template<>
  4. class Parser<int> {
  5.   int parse() { /*...*/ }
  6. };

  7. template<>
  8. class Parser<float> {
  9.   float parse() { /*...*/ }
  10. };
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP