字符串(四)

本文目标:

介绍处理 字符串 的各个头文件(string.h,  cstring,   string 头文件)

1.简要介绍3个头文件

1.1<string.h>

#include  <string.h>

这是C语言中字符串处理头文件。(C风格字符串

<string.h> 里面包含了若干函数,如strcmp, strcpy 等函数;不能定义 string  s;

1.2<cstring>

#include <cstring>

using namesapace std;

C++为了兼容C风格的字符串,定义了这个C++风格(不带.h后缀)的头文件。

它其实只是<string.h>的封装而已,和<string.h>用法一致。 里面包含了若干操作字符串的函数 strcmp, strcpy等; 不能定义 string  s;

1.3<string>

#include <string>

using namesapce std;

C++里面的 标准库类型;

<string> 和<string.h> 除了名字接近意外,它们没有半毛钱关系。

<string> 里面有一个  string 类;功能强大。string类里面,常用的的方法有:append(), size(), find(), c_str() 等

2.头文件包含的内容

(1)文件cstring,和string.h对应,c++版本的头文件,包含比如strcpy之类的字符串处理函数
(2)文件string.h,和cstring对应,c版本的头文件,包含比如strcpy之类的字符串处理函数
(3)文件string,包含std::string的定义,属于STL范畴
(4)CString,MFC里的的字符串类

string.h是C语言中字符串操作函数的头文件
cstring是c++对C语言中的strcpy之类的函数申明,包含cstring之后,就可以在程序中使用C语言风格的strcpy之类的函数。

string是c++语言中string类模板的申明 
CString是MFC中定义的字符串类,MFC中很多类及函数都是以CString为参数的,另外CString类重载了(LPCSTR)运算符,所以如果你在MFC下面使用CString类,就可以直接用CString类做为参数来调用需要一个C语言风格字符串的win   api函数,编译器会自动调用(LPCSTR)成员函数完成从CString到一个C风格字符串的转换。如果你在MFC下使用C++语言中标准的 string类,那么在调用需要C语言风格的字符串为参数的win   api时,你必须显示调用sting.c_str()成员函数,来完成同样的转换,也就是说在使用MFC里,如果用CString类,会比sting类方便那么一点点。

3.头文件如何封装以及区别

(1).首先说cstring与string.h:
cstring和string.h其实里面都是C标准库提供的东西,某些实现中cstring的内容
就是:  
  namespace   std  
  {  
  #include   <string.h>  
  }  
cstring是C++的组成部分,它可以说是把C的string.h的升级版,但它不是C的组成部分。
所以如果你用的是C++,那么请用cstring,如果你用的是C请用string.h。

(2).string与cstring: 
一般一个C++库老的版本带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。      
string,它是C++定义的std::string所使用的文件,是string类的头文件,属于STL范畴。它有很多对字符串操作的方法。

4.历史问题

(1)string.h是C++标准化(1998年)以前的C++库文件,在标准化过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以string.h头文件成了cstring头文件。但是其实现却是相同的或是兼容以前的。相当于标准库组织给它盖了个章,说“你也是我的标准程序库的一份子了”

(2)cstring代表的是string.h,但是被封装到了std里面,譬如调用strlen函数,需要写成std::strlen(yourstr)才行,这个使用方法比较符合C++的标准要求string就是C++标准库里面的string模板(确切地说应该是一个特化的模板),但是他同样包含了C风格字符串操作函数的定义(应该是通过包含string.h实现的)string.h就不需要使用名字空间了,这个是C风格字符串操作的一个函数库,strlen,strcpy,strcat,strcmp……都在这里面了,不过既然是C风格的库,当然不需要namespace支持了。

(3)string 是C++里面操作字符串的标识库类型。它定义了string 类(也可以理解<string>就是一个字符串容器),string类里面封装了 强大的、丰富的操作字符串的方法。(不得不吐槽的缺点:string类里面,竟然没有格式化字符串(Format(...)的方法。每次需要格式化一个字符串的时候,还必须借助 sprintf 和一个字符数组)

参考地址:http://www.cnblogs.com/maowang1991/p/4181806.html

时间: 2024-10-26 04:33:59

字符串(四)的相关文章

python基础2之字符串、列表、字典、集合

内容概要: 一.python2 or 3 二.字符串拼接 三.字符串 四.列表.元祖 五.字典 六.集合 七.练习  一.python2 or python3 目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流. python2和3区别: 1.PRINT IS A FUNCTION 1 Old: print "The answer is", 2*2 New: print("The answer is", 2*2) 2 Ol

android——字符串string(转)

原文地址:http://www.open-open.com/lib/view/open1387942832078.html String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(StringBuff

php中的字符串和正则表达式

一.字符串类型的特点 1.PHP是弱类型语言,其他数据类型一般都可以直接应用于字符串函数操作. 1: <?php //输出345 //输出345 //先查找hello常量,若没找到,将hello看做字符串使用     2.字符串可以作为“数组”,是字符的集合. 1: <?php 3: echo $str[0]; 5: echo $str[2];           但是字符串不是真的数组,不能使用数组的函数.如count($str)不会返回字符串长度.PHP引擎无法区分字符和数组,产生二义性.

android 字符串string

String : 字符串类型 http://www.open-open.com/lib/view/open1387942832078.html 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(StringBuffer bu

I. 字符串

一,字符串的四种形式 二,单引号字符串 三,双引号字符串 四,双引号定界符字符串(heredoc) 在heredoc中可以识别变量 五,单引号定界符字符串(nowdoc)

JS实现用特殊符号替换字符串的中间部分区域

body { background: #f4f4f4 } .title { width: 100%; background: #5cb85c; padding: 5px; font-size: 20px; margin: 5px } 一.引入 相信很多人都遇到过敏感信息需要做部分隐藏功能,大多数都是用特殊符号去替换. 正好今天我又遇到这样的前端显示的需求,正好把相关JS记录下来,方便下次再用. 二.JS部分 /* 部分隐藏处理 ** str 需要处理的字符串 ** frontLen 保留的前几位

Java字符串(一)

********************************定义字符串***************************** 使用String类 定义字符串 字符串使用" " String s = "aaa"; // s不是字符串 s字符串对象的引用 "aaa"."bbb". "Hello World" 都是String类的对象 ********************************初步了

WebApi基于Token和签名的验证

最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久,因此对原文中省略的部分这里做一点个人的理解和补充,非常基础,知道的园友就不需要了,只是帮助初次学习的园友理解.原文传送门: http://www.cnblogs.com/MR-YY/p/5972380.html#!comments 本篇博文中的所有代码均来自上述链接,如果你觉得有帮助,请点击链接给

java 基础3

一.基本if结构 1.流程图   输入输出 判断和分支   流程线 1.1              简单的if条件判断 if(表达式){ //表达式为true,执行{}中的代码 } 1.2              简单的if条件判断 if(表达式){ //表达式为true,执行这里 }else{ //表达式为false,这行这里 } 说明:如果if或else后面,有且仅有一行代码,{ }可以省略,但不建议省略 二.逻辑运算符 l  && 逻辑与(按shift+7)--且(并且.同时)

mysql 常用函数

MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. 函数 作用 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数 SELECT FLOOR(1.5) -- 返回1 R