string类 string.h头文件 cstring头文件区别以及读取一行字符串总结
2014-08-31 14:43
417 查看
以前一直分不清string类 string.h头文件 cstring头文件的去别,今天ce了一发才稍微弄懂了。
首先C语言中只有string.h头文件,string.h包含了一些字符数组和字符串的函数(其中包括字符串连接:strcat()、复制:strcpy()、比较:strcmp()以及测长度:strlen()等函数),在C语言中只能用数组来存放字符串(注意:字符串结尾\0结束,而字符数组最后一个字符不一定是\0)。
cstring:我们知道C++为了兼容C,将C的.h头文件换成了c开头的,所以string.h自然就换为了cstring。即cstring是string.h的升级版本
string:由于在C++中为了防止C存字符串只能用数组,而一旦字符串长度超过数组大小,就可能引发错误的现象,C++使用了更加方便安全的方法。C++提供了的一种新数据类型--字符串类型(string类),他不是c++的基本数据类型(int、double、char等基本数据类型),而是在C++标准库中申明的一个字符串类,用这种类可以定义对象,每一个字符串变量都是string类的一个对象。所以使用string类型来定义变量时应该引入string类头文件。
总结:用C++写代码时只需引入cstring函数头文件和string类头文件即可。
试验代码:
ps:1.读取一行时的两种方法:gets()--> 字符数组和getline()--> string类型的字符串函数
2.测长度: 字符数组应用strlen(c),字符串可以用s.length() || s.size()
亦可参考此处:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html
首先C语言中只有string.h头文件,string.h包含了一些字符数组和字符串的函数(其中包括字符串连接:strcat()、复制:strcpy()、比较:strcmp()以及测长度:strlen()等函数),在C语言中只能用数组来存放字符串(注意:字符串结尾\0结束,而字符数组最后一个字符不一定是\0)。
cstring:我们知道C++为了兼容C,将C的.h头文件换成了c开头的,所以string.h自然就换为了cstring。即cstring是string.h的升级版本
string:由于在C++中为了防止C存字符串只能用数组,而一旦字符串长度超过数组大小,就可能引发错误的现象,C++使用了更加方便安全的方法。C++提供了的一种新数据类型--字符串类型(string类),他不是c++的基本数据类型(int、double、char等基本数据类型),而是在C++标准库中申明的一个字符串类,用这种类可以定义对象,每一个字符串变量都是string类的一个对象。所以使用string类型来定义变量时应该引入string类头文件。
总结:用C++写代码时只需引入cstring函数头文件和string类头文件即可。
试验代码:
//@auther Yang Zongjun #include <iostream> #include <cstdio> #include <stdlib.h> #include <cmath> #include <cstring> #include <string> using namespace std; #define PI acos(-1.0) #define EPS 1e-8 const int MAXN = 115; const int INF = 2100000000; char c[MAXN], ch; string s, a; int main() { //freopen("C:/Users/Administrator/Desktop/input.txt", "r", stdin); cin >> c; cout << c << endl; cout << strlen(c) << endl; cout<< c[17] <<endl; cout << endl; cin >> s; cout << s << endl; //cout << strlen(s) << endl; cout<< s.length() << s.size() << endl; cout<< s[17] <<endl; cout << endl; getchar(); getline(cin, s); cout << s << endl; //cout << strlen(s) << endl; cout<< s.length() << s.size() << endl; cout<< s[17] <<endl; gets(c); puts(c); cout << c << endl; cout << strlen(c) << endl; cout<< c[17] <<endl; cout << endl; return 0; } //测试数据 /* nehwrigj28934yehgn nehwrigj28934yehgn nehwrigj28934yehgn 438s nehwrigj28934yehgn 438ssdfs */
ps:1.读取一行时的两种方法:gets()--> 字符数组和getline()--> string类型的字符串函数
2.测长度: 字符数组应用strlen(c),字符串可以用s.length() || s.size()
char c[MAXN]; string s; gets(c); cout << c << "----->" << strlen(c) << endl; getline(cin, s); cout << s << "----->" << s.length() << " " << s.size() << endl;
亦可参考此处:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html
相关文章推荐
- string代替char数组的输入输出以及利用getline每次读取一行字符串
- String,CString,TCHAR,char间区别和联系以及相互转化
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- Java 创建字符串String的各种方法以及区别
- MFC中CString与string的区别以及相互转换关系
- 头文件 string.h cstring string 区别
- C++ 标准头文件与C头文件区别与联系以及C风格字符串
- 头文件 string.h cstring string 区别
- Android 字符串拼接总结 String,StringBuffer与StringBuilder的区别??
- C++中string类的处理字符串构造函数用法, 以及getline cin.getline()输入的区别
- 头文件 string.h cstring string 区别
- C++中string和string.h以及cstring,CString的作用和区别
- string与string.h以及cstring的关系区别
- 头文件 string.h cstring string 区别
- 关于C++中标准库以及string.h,cstring,string的区别
- 关于可变字符串StringBuffer和String的区别总结
- C++ 标准头文件与C头文件区别与联系以及C风格字符串
- java中字符串操作string、stringBuffer和stringBuilder的区别以及其相关操作技术
- 我刚刚写了一个map的题目,还用到了#include<string>的头文件,下面我来总结一下 map<类型>变量 q q.find(找字符串) q.end()是否到达末尾
- 『C++ Primer学习笔记』Chapter 3——string对象、vector对象以及数组的配套类型,C风格字符串问题和处理区别