四月 17, 2007

1) 在C标准库里面,使用atoi:

#include <cstdlib>
#include <string>

std::string text = "152";
int number = std::atoi( text.c_str() );
if (errno == ERANGE) //可能是std::errno
{
    //number可能由于过大或过小而不能完全存储
}
else if (errno == ????)
//可能是EINVAL
{
    //不能转换成一个数字
}

2) 在C++标准库里面,使用strstream:

#include <sstream>
#include <string>

std::string text = "152";
int number;
std::istringstream ss( text );
ss >> number;
if (! ss.good())
{
    //错误发生
}

3) 在Boost库里面,使用lexical_cast:

#include <boost/lexical_cast.hpp>
#include <string>

try
{
    std::string text = "152";
    int number = boost::lexical_cast< int >( text );
}
catch( const boost::bad_lexical_cast & )
{
    //转换失败
}

1条评论 »

  1. thank you

    评论 由 mgg — 四月 8, 2008 @ 7:31 pm

RSS方式的评论。 TrackBack URI

发表评论

提示:如果你刚刚提交过评论,但是还没有被显示出来,请点击这里刷新一下: 刷新评论