C/C++字符串
2016-03-03 10:34
239 查看
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,包括换行符。
相关文章推荐
- C++中的单例模式
- 声明已被否决 VS C++
- C语言编码与字符转换
- C++单例
- C++基础总结(4)-----指针
- C++成员变量初始化顺序问题
- C++基础总结(4)-----指针
- 《C++高级进阶》读书笔记 第一章 C++基础知识
- C语言函数参数为空和void
- 【c/c++】#pragma once 与 #ifndef 的区别解析
- C++ 多重继承 包含问题
- 详解C语言中的char数据类型及其与int类型的转换
- C语言中制表符
- 学习C++反汇编-析构函数
- YTU 2422: C语言习题 n个数逆序
- 北邮oj 84 single number
- YTU 2421: C语言习题 矩形法求定积分
- C/C++综合測试题(四)
- YTU 2427: C语言习题 整数排序
- Boost库的编译安装