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

C++ string string string string string string string string string string

2015-09-09 20:22 701 查看
一、 初始化

string s1="i love you";
string s2(s1);  //把s2初始化为string s1,注意不能写成string s2; s2(s1);
string s3("value");  //将s3初始化一个c类型的字符串
string s4(6,'s');   //将s4初始化为6个字符‘s'
/*注意字符串面值与标准库string不是同一个类型*/
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
cout<<s4<<endl;




二、输入

string s6;
getline(cin,s6);//输入带有空格的字符串,测试“ hello world ”
cout<<s6<<endl;
  cout<<"------------------------------"<<endl;
string s5;
cin>>s5;//输入不带空格的字符串 “ hello world ”测试,发现只读取有效字符到遇到空格结束
cout<<s5<<endl;
//故意把s5和s6倒过来,如果先用cin输入s5,再用getline(cin,s6)会有问题。




三、访问字符

cout<<s1.at(13)<<endl;//at函数提供范围检查,当越界时会抛出out_of_range异常,
cout<<s1[13]<<endl;//下标运算符[]不提供检查访问。


四、特性描述

1.判断是否为空

s1.empty()


2.长度

  string s1="12345678";
  cout<<s1.length()<<endl;//.length()和.size()没区别,用哪个都行
  cout<<s1.size()<<endl;//size()代表它是个容器,length()体现它是字符串


3.重新定义它的长度(多去少补)

string s1="12345678";
cout<<s1<<endl;
cout<<s1.size()<<endl;//.length()和.size()没区别,用哪个都行
s1.resize(4);//多去
cout<<s1<<endl;
cout<<s1.size()<<endl;
s1.resize(6,'x');//少补,不写第二个参数也可以
cout<<s1<<endl;
cout<<s1.size()<<endl;




五、赋值

string s1="12345678";
string s3="1234567";
char s2[10]="12345";
cout<<s1<<endl;
s1="aaa";
cout<<s1<<endl;
s1.assign(s3);//assign里可以是c类型的字符串,也可以是string字符串
cout<<s1<<endl;
s1.assign(s2,3);//前n个字符赋值,这种第一个参数只能是c类型的字符串
cout<<s1<<endl;
s1.assign(3,'c');//n个字符赋给当前字符串
cout<<s1<<endl;
s1.assign(s3,2,3);//把字符串(可以是c类型的也可以是string)中从start开始的n个字符赋给当前字符串
cout<<s1<<endl;




六、连接

string s1="12345678";
string s3="1234567";
char s2[10]="12345";
cout<<s1<<endl;
s1+=s3;
cout<<s1<<endl;
s1.append("bb");//里面可以是c类型的字符串,也可以是string
cout<<s1<<endl;
s1.append(s3,2,3);//把字符串s3中从2的3个字符连接到当前字符串的结尾,也可以是c类型的字符串
cout<<s1<<endl;
s1.append(3,'c');//把n个字符连接到当前字符串后
cout<<s1<<endl;
s1="aaa",s3="bbb";
string s4=s1+s3;
cout<<s4<<endl;




六、比较

  string s1="aaa";
string s2="aaa";
string s3="bbb";
if(s1==s2)
cout<<"相等"<<endl;
else
cout<<"不相等"<<endl;
if(s1==s3)
cout<<"相等"<<endl;
else
cout<<"不相等"<<endl;
//另外,运算符">","<",">=","<=","!="均被重载用于字符串的比较
if(s1>s3)
cout<<"s1>s3"<<endl;
else
cout<<"s1<s3"<<endl;
cout<<s3.compare(s1)<<s1.compare(s3)<<s1.compare(s1)<<endl;//比较s1和s3的大小,小于返还-1,大于返还1,等于返回0




七、子串

string s1="12345678";
string s2=s1.substr(2,3);//返回2开始的3个字符组成的字符串
cout<<s2<<endl;




八、交换

string s1="12345678";
string s2="abcd";
s1.swap(s2);
cout<<s1<<endl;
cout<<s2<<endl;



  

xxxxxxxxxxxx

主要参考 还没有写完
http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html http://blog.csdn.net/y990041769/article/details/8763366
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: