自己实现的Boost库中的lexical_cast任意类型转换

知道了C++的I/O设施之后,这些就变的很简单了。如果你经常使用,时间长了就会有感觉。这个事情是多此一举吗?就当是练习吧,知道原理之后,你会觉得用起来更舒畅,更喜欢C++了。

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
using namespace std;

template<typename Result,typename Para>
Result lexical_cast(Para para)
{
    stringstream ss;
    ss<<para;
    Result result;
    ss>>result;
    return result;
}
//int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
int main(int argc, char *argv[])
{

    double arr[10] = {0.1,1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,9.0};
    vector<string> str_arr;
    for (size_t i =0 ; i< sizeof(arr)/sizeof(double) ; ++i)
    {
        str_arr.push_back(lexical_cast<string>(arr[i]));
    }
    ostream_iterator<string> out(cout," ");
    copy(str_arr.begin(),str_arr.end(),out);

    return 0;
}

时间: 2024-08-07 08:39:13

自己实现的Boost库中的lexical_cast任意类型转换的相关文章

自己实现的Boost库中的lexical_cast随意类型转换

知道了C++的I/O设施之后.这些就变的非常easy了. 假设你常常使用,时间长了就会有感觉.这个事情是多此一举吗?就当是练习吧,知道原理之后,你会认为用起来更舒畅,更喜欢C++了. #include <iostream> #include <vector> #include <string> #include <sstream> #include <algorithm> #include <iterator> using names

模拟实现c++标准库和boost库中的智能指针

我们知道c++标准库中定义了智能指针auto_ptr,但是我们很少用它,因为虽然它能够自动回收动态开辟的内存,不需要程序员自己去维护动态开辟的内存,但是当用它去赋值或者是拷贝构造时有一个管理权转移的过程,这样我们就不能很方便的使用auto_ptr. 下面是简单的auto_ptr的实现,我们可以看到在复制和赋值时它将转移管理权. template<class T> class AutoPtr { public:      AutoPtr(T* ptr)       :_ptr(ptr)     

BOOST 库中filesyatem 库的学习

/*FileSyatem 库的学习 ------------------------------------------------------------------------------------------------------------库的使用方式 嵌入源码的形式: #define BOOST_SYSTEN_NO_LIB #define BOOST_FILESYSTEM_NO_LIB #include<boost\filesystem.hpp> ----------------

boost库中的 program_options

1.阅读rviz中的源码时在rviz/visualizer_app.cpp中遇到如下代码: po::options_description options; options.add_options() ("help,h", "Produce this help message") ("splash-screen,s", po::value<std::string>(), "A custom splash-screen ima

Boost库中shared_ptr(上)

1.共享性智能指针(shared_ptr) 引用计数型指针 shared_ptr是一个最像指针的"智能指针",是boost.smart_ptr库中最有价值,最重要,也是最有用的.  shared_ptr实现的是引用技术型的智能指针,可以被拷贝和赋值,在任意地方共享它,当没有代码使用(此时引用         计数为0)它才删除被动态分配的对象.shared_ptr也可以被安全的放到标准容器中: 2.怎么使用shared_ptr 举一个操作的例子: #include<iostrea

Boost库中scoped_ptr

1.VC和VS VC版并不是标准C++,VS版符合标准C++,其语法相当严格. 缺点:VC和VS都只能释放一个具体类型空间,不能对数组空间进行释放,还有写时拷贝的问题:         所以引发了Boost库的出现来解决此类问题. 2.Boost库 推荐看一下Boost库完全开发指南. Boost本身是开源库,在C++中的地位举足轻重,第三章内存管理,智能指针: C++中也提供了智能指针,但是并不能解决所有问题. smart_ptr库中:new delete的运用不正确,是C++中造成资源获取/

详解boost库中的Message Queue .

Message Queue(后文简写成MQ或消息队列)是boost库中用来封装进程间通信的一种实现,同一台机器上的进程或线程可以通过消息队列来进行通迅.消息队列中的消息由优先级.消息长度.消息数据三部分组成.这里需要注意的事,MQ只是简单的将要发送的数据在内存中进行拷贝,所以我们在发送复杂结构或对象时,我们需要将其序列化后再发送,接收端接收时要反序列化,也就是说我们要自己去定义区分一条消息(就是自定义网络通迅协议).在MQ中,我们可以使用三模式去发送和接收消息: 阻塞:在发送消息时,若消息队列满

Boost库中的智能指针 shared_ptr智能指针

shared_ptr智能指针的意思即:boost::shared_ptr是可以智能的管理动态分配的内存资源,几个智能指针可以同时共享一个动态分配的内存的所有权. 下面我们通过一个例子来学习一下它的用法: 注 :使用shared_ptr智能指针,要加入#include <boost/shared_ptr.hpp>头文件 class example { public: ~example() { std::cout <<"It's over\n"; } void do

boost库学习之 lexical_cast

在C中字符串转换为数值,可以使用atoi().atof().atol()等,数值转换为字符串可以使用itoa().sprintf()等,但itoa与编译器有关,并不是标准函数,而sprintf可能会不安全. 使用lexical_cast可以很容易地在数值与字符串之间转换,只需在模板参数中指定转换的目标类型即可.如 int x = lexical_cast<int>("100"); long y = lexical_cast<long>("10000&q