C++字符串间的转换
来源:优易学  2011-9-22 10:36:54   【优易学:中国教育考试门户网】   资料下载   IT书店
  平时在写代码时经常需要在数值(int, long, float, double ...)与字符串间的相互转换。C/C++中相关的转换方法主要有如下几种:
  (一)、使用CRT库中的转换函数族。
  
_itoa, _itow 及其反转换 atoi, _wtoi
  _ltoa, _ltow 及其反转换 atol, _wtol
  _ultoa, _ultow
  _ecvt, _fcvt, _gcvt 及其反转换 _atodbl, _atoldbl,_atoflt
  ...
  此方法的优点:C中的标准库(部分为平台相关),不需要自己手工写。
  青年人网提醒:缺点(转换函数较多,难以记住,使用不方便。)
  (二)、借助C++98标准中的stringstream模板类实现。
  
数值到字符串的转换可如下实现之:
  template <typename CharT, typename NumericT>
  basic_string<CharT> Numeric2String(NumericT num)
  {
  basic_ostringstream<CharT> oss;
  oss << num;
  return oss.str();
  }
  字符串到数值的转换可如下实现:
  template <typename NumericT, typename CharT>
  NumericT String2Numeric(const basic_string<CharT> &str)
  {
  basic_istringstream<CharT> iss(str);
  NumericT result;
  iss >> result;
  return result;
  }
  为了支持C风格字符串直接到数值的转换,我们可以重载一个转换:
  template <typename NumericT, typename CharT>
  NumericT String2Numeric(const CharT *str)
  {
  basic_istringstream<CharT> iss(str);
  NumericT result;
  iss >> result;
  return result;
  }
  此方法的优点:转换函数少,容易记住,使用方便。
  缺点:模板编程对于C++初学者来说有难度,需手工实现。
  (三)、使用第三方库(如boost中的lexical_cast)。
  
使用此种方法的优点:功能强大且稳定。
  缺点:需要自己移植。
  青年人网推荐:感兴趣的朋友可自行研究。
  (四)、使用sprintf可实现数值到字符串的转换。
  
此种方法可惜没有相应的反转换,且数组缓冲区容易益处,青年人网强烈不推荐使用。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训