String and Text Processing(字符串和文本处理)

来源:互联网 发布:软媒win10优化工具 编辑:程序博客网 时间:2024/06/10 00:02

一、概述

   有时一个值要转换成为文本格式,如int代表 std::string,或者相反,一个std::string代表一个int数值。这样的转换是很普通的,如在内部程序运行中的数据和配置文件中的数据。

   标准C和C++库提供了大量机制进行转换,它们在易用性,扩展性和安全性方面各有不同.

   例如:C的函数 atoi(),atof()(在stdlib.h下)等有大量限制:

  • 仅在一个方向进行转换:从文本转为内部数据类型,要进行相反的转换要对易用性和安全性做一个妥协,如sprintf()等,或者损失可移值性如 itoa()。
  • 所支持的数据类型仅是内置数据类型的一个子集,如 int,long和 double。
  • 所支持的类型不能以一种统一的形式进行扩展。如将字符串转为复数或实数。

   标准C函数strtol()有相同的限制,但是提供好优雅的转换控制,然而这样的控制在很多时侯不需要或者没有用。scanf()函数家族提供了更好的控制,但缺乏安全性和易用性。

  标准C++提供了stringstream类,它提供了大量用于任意类型文件的控制和转换,然而对于简单的的转换,stringstream显得太笨拙和难以理解。

  lexical_cast()函数模板提供了一种可以将文本转换为任意其它类型一种简便、统一的方式,它的简便是表达式层面的简便。而更复杂、更精确的转换则推荐用stringstream完成。数字与数字之间的转换,boost::numeric_cast()则比lexical_cast更方便。

  对于字符串格式化,包括stringstream,lexical_cast等比较可以参看  http://www.gotw.ca/publications/mill19.htm,它上面提供的示例是很有帮助的。


二、Examples

#include "stdafx.h"
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>

#include <iostream>
#include <vector>

using namespace std;

void log_message(const std::string&);
void log_errno(int yoko)
{
 //log_message("Error" + boost::lexical_cast<std::string>(yoko)+":" + strerror((yoko)));
}

int main(int argc, char* argv[])

 for (int i = 0; i < argc; i++)
 {
  cout << argv[i] << endl;
 }

 using boost::lexical_cast;
 using boost::bad_lexical_cast;
 vector<short>args;

 while (*++argv)
 {
  try
  {
   args.push_back(lexical_cast<short>(*argv));
  }
  catch (bad_lexical_cast&)
  {
   args.push_back(0);
  }
 }
 for (short s : args)
 {
  cout << s << endl;
 }
 

 return 0;
}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕28周胎儿腿短怎么办 b超显示腿短怎么办 2岁多宝宝不愿意说话怎么办 6岁儿童咬字不清怎么办 两岁宝宝爱看电视怎么办 两岁宝宝喜欢看电视怎么办 三岁宝宝说话不清晰怎么办 儿子快四岁了说话不清楚怎么办 儿子快三岁了说话不清楚怎么办 2岁宝宝受刺激了怎么办 一岁的宝宝口臭怎么办 古话说小孩牙齿掉了怎么办 宝宝三岁胆子小怎么办 小宝宝就是不愿意学说话怎么办 2岁宝宝体重偏重怎么办 三岁宝宝体重偏重怎么办 3岁宝宝说话晚怎么办 孩子吃饭总说话吃饭慢怎么办 我的孩子不聪明怎么办 小孩个子长不高怎么办 晚修自己老喜欢讲话怎么办 宝2岁宝脾气大怎么办 宝宝比同龄孩子发育晚怎么办 早教机构业绩不好怎么办 孩子上早教课哭怎么办 两岁宝宝哭闹不止怎么办 7个月宝宝怕生疏怎么办 5个月宝宝怕洗澡怎么办 4个月宝宝认人怎么办 2岁宝宝语言迟缓怎么办 宝宝老是哭闹不睡觉怎么办 7岁儿童说话晚怎么办 一岁多的婴儿说话晚该怎么办 宝宝甲低300多怎么办 两岁半宝宝还不怎么会讲话怎么办 宝宝两岁半了还不讲话怎么办 两岁宝宝怕生人怎么办 四岁宝宝不说话怎么办 1岁宝宝牙齿黄斑怎么办 儿子俩周半了就是不说话怎么办 两岁宝宝牙齿上有黑渍怎么办