C/C++字符串

c和c++既有联系也有区别,c++兼容c。首先从头文件说起。
C++标准库除了定义了一些特定于C++的设施外,还包括C标准库。C++中的头文件cmath其实就是利用了C标准库函数,这些库函数就定义在C标准库的math.h投文件中。C标准库头文件命名形式为name.h,而C++版本则命名为cname,少了后缀.h而在头文件名前加了c。c表示这个头文件来源于C标准库。因此,cmath和math.h文件的内容是一样的,只是采用了更适合C++程序的形式。cname头文件中定义的名字都定义在空间std内,而.h版本中的名字却不是这样。
通常,C++程序中应采用cname这种头文件的版本,而不采用name.h版本。这样标准库中的名字在命名空间std中保持一致。使用.h版本会给程序员带来负担,因为他们必须记得那些标准库名字是从C继承来的,而哪些是C++所特有的。
string比较特别。C标准库中有一个叫“string.h“的头文件,包含一些常用的C字符串处理函数。但这个头文件跟C++的string类没有关系,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。
<string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;<string>是包装了std 的C++头文件,对应的是新的string 类;<cstring>是对应于旧C头文件的std 版本。
<string>是C++ 的头文件,其内包含了一个string类,string s1就是建立一个string类的对象 。
<string.h> 的C语言的东西 并无类,所以不能 string s1 。
<cstring>文件实际上只是在一个命名空间std中包含了 <string.h>。
所以作为计算字符串长度的函数strlen()和s.size()或者s.length()是应用在不同场合的,并不冲突。strlen(char *)只能用char *做参数,这里可以是一个字符串字面值(如"abc"),而且必须是以"\0"结尾的。eg.
int main()
{
char str[10]="123";
   int n;
   n=strlen(str);
  // 此时n为3。
  return 0;
  }
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
int n;
cin>>s;
n=s.size();
//n=s.length();
return 0;
}

s.size()和s.length()用法一致,返回s中字符的个数。键盘输入以回车符’\n’为结束,cin遇到空白字符(如空格、换行符、制表符),读取终止。此时空格、’\n’皆不算作字符个数。

int main()
{
 string st("the a\n");
 cout<<st.size()<<endl;
 return 0;
}

运行结果为5,包括换行符。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值