您的位置:首页 > 编程语言 > C语言/C++

C++ STL string类型

2017-04-04 14:27 447 查看
要想使用标准C++中string类,必须要包含

#include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件

或using namespace std;

1:string对象的定义和初始化以及读写

string s1;      默认构造函数,s1为空串

string s2(s1);   将s2初始化为s1的一个副本

string s3("hello");   将s3初始化一个字符串面值副本

string s4(n,'c');   将s4 初始化为字符'c'的n个副本

cin>>s5;  读取有效字符直到遇到空格

getline(cin,s6);  读取字符到遇到换行,空格可读入,直到‘\n’结束

getline(cin,s7,'a'); 一直到‘a’结束,其中任何字符包括'\n'都能够读入

#include<iostream>
using namespace std;
//getline(cin,str);处理后还留有结束符在输入流中,故需要使用cin.get();
//接受最后一个结束符,才能接受后面得输入值。
int main()
{
string s1,s2("hello"),s3(10,'c'),s4,s5,s6;
cin>>s4;
cin.get();
getline(cin,s5);
cin.get();
getline(cin,s6,'a');
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
cout<<s4<<endl;
cout<<s5<<endl;
cout<<s6<<endl;
}


2:string对象操作

s.empty()  判断是否为空,bool型

s.size() 或 s.length() 返回字符的个数

s
 返回位置为n的字符,从0开始计数

s1+s2 连接,看下面例子:

    可用此方法给字符串后面添加字符如:s=s+'a'; 

    a:  string s2=s1+", ";  //对,把一个string对象和一个字符面值连接起来是允许的

    b:  string s4="hello "+", ";   //错,不能将两个字符串面值相加

    c:  string s5=s1+", "+"world";   //对,前面两个相加相当于一个string对象;

    d:  string s6="hello" + ", " +  s2;  //错

(注:字符串尾部追加还可用s.append("abc")函数添加)

s1=s2  替换

s1==s2  相等,返回true或false

!=,<,<=,>,>=  字符串比较,两个字符串短的与长的前面匹配,短的小于长的

string s7("hello world!"),s8("dear");
cout<<s7<<endl<<s8<<endl;
cout<<s7.empty()<<endl;//空返回1
cout<<s7.size()<<endl;//不包括'\0'
cout<<s7[0]<<endl;
cout<<s7<<endl;
cout<<(s7==s8)<<endl;
cout<<s7+s8<<endl;

k = s.find(s1);  //s1为string类型,k为int类型,表示下标

s.erase(k,s1.size()); //从k处删除长度为s1.size()的元素 及删除s1

s.insert(k,s2); //在k处插入s2 string s13,s14,s15;
s13 = "hello "; s14 = "world";
s15 = s13+s14;
cout<<s13<<endl<<s14<<endl<<s15<<endl;
int k = s15.find("world");
s15.erase(k,sizeof("world")-1);
s15.insert(k,"James");
cout<<s15;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 string stl