您的位置:首页 > 其它

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类头文件即可。

试验代码:

//@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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: