基于stringstream的类型转换封装
来源:互联网 发布:停牌系并购重组 知乎 编辑:程序博客网 时间:2024/04/27 15:58
用法:
lexical::cast_to<TypeTo>::from<TypeFrom>(FromValue);
如
double a = lexical::cast_to<double>::from("3.1416");
特点:
接口一目了然。能进行基本类型间的转换。
实现:
使用stringstream
有一个问题就是如果源类型和目标类型都是string,即stringstream << in和 stringstream >> out中的in和out都是string,那么如果in里含有空格,则out就会在空格这里截断,应该是stringstream的问题,不知道为什么会这样,所以后面给类做了特化。
对于相同类型,不进行额外转化。
以下是头文件
lexical_cast.h
#ifndef LEXICAL_CAST_H#define LEXICAL_CAST_H#include <sstream>#include <typeinfo> //bad_castnamespace lexical {class bad_cast : public std::bad_cast{public:virtual const char* what() const throw(){return "bad lexical cast: source type value could not be interpreted as target";}};template<typename Target>struct cast_to {template<typename Source>static Target from(const Source& in) {static std::stringstream s;s.clear();s.str("");Target result;if ((s << in).fail() || (s >> result).fail())throw bad_cast();return result;}static Target from(const Target& in) {return in;}};template<>struct cast_to<std::string> {template<typename Source>static std::string from(const Source& in) {static std::stringstream s;s.clear();s.str("");if ((s << in).fail())throw bad_cast();return s.str();}static std::string from(const std::string& in) {return in;}};}#endif //LEXICAL_CAST_H
- 基于stringstream的类型转换封装
- stringstream类型转换的使用方法
- stringstream 实现类型转换的简单案例
- 使用stringstream转换类型
- C++类型转换-stringstream
- stringstream类型转换
- 用stringstream实现了任意类型变量的相互转换
- C++ stringstream详解-安全高效的类型转换
- 使用stringstream 来进行string和其他类型的转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对string进行类型转换
- C++之类型转换利器-stringstream
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- C++之stringstream分割和类型转换
- 使用stringstream对象简化类型转换
- Vi/Vim查找替换使用方法
- Zend Framework教程-Zend_Helpers-动作助手-创建自己的动作助手
- ADO.NET技术
- java心得---泛型
- 动软第三方控件的使用
- 基于stringstream的类型转换封装
- java心得---内部类、匿名类、静态内部类
- Zend Framework教程-Zend_Helpers-动作助手(Zend_Controller_Action_Helper)概述
- 使用Response使用文件下载
- Session和Cookie的区别
- 第十四周实验--任务2--建立专门的链表类处理有关动态链表的操作
- 根据表名生成3.0语法
- 使用分布式事务配置MSDTC的步骤
- Oracle知识点