sting的几个初始化方式
string a[100];表示定义了一个字符串数组,一个数组里面是一个字符串!!
string a;//定义一个字符串a
string a=b;//字符串a = 字符串b
string a="abc"//字符串a为abc
string a(3,c)//a的内容为 ccc
string上的操作
//直接读入输出即可
string a1,a2;
cin>>a1>>a2;
cout<<a1<<a2;
注意string无法用scanf读入但是输出可以用printf
printf("%s",a1,c_str() );//这玩意输出更快哦~~
puts(a1,c_str() )
string上几个常用的函数
substr(0,p+1)就是从位置0开始到位置p,长度为p+1,所以第一个参数写的是起始点的坐标,第二个参数是子串的长度。除此之外,长度可以不写,这样就会输出到最后一个字符“\0”之前的所有字符
empty()判断字符串是否有值
cout<<a1.empty()<<endl;
如果有数值显示0没有显示1
size()效果和strlen()一样判断字符串的元素的个数
cout<<a1.size()<<endl;
cout<<strlen(a1)<<endl;
substr()
用法 string a = "abc"; cout<<a.substr(0,3)<<endl;输出abc
size和empty的运行速度比strlen快很多
string的比较
string a,b,c;
直接用> < = != 等直接比较
比较方式是字典序
string之间的相加
string a ="abc";
a+='!'; //加字符,累加等操作都可以但是只有加法
s3=s1+","+s2+'!';也可以实现
string b = "aad"
string c = a+b;
c的内容为 abcaad
string加法的隐形转化
1.加法的左右俩边 只要有一个是 string的类型
那么另外一边必转化成string类型
2,当运用加法时要保证 + 的左右俩边至少有一个string类型
例 string a,b,c;
c = a + b ;成立
c = 'a'+'d';不成立,报错
c = a + 'w' + 'c'; 成立 因为 w被转换成string类型了
c = "hello" + 'c' + b;不成立 运算是从左到又依次进行的
string的几个操作
string s = "hello"
for(int i = 0 ; i < s.size(); i++ )
cout<< s[i] <<endl;//当成一个普通的字符串数组即可
或者
for(char c : s) cout<<c<<endl;
// char是c的类型,c是变量 ,s是字符串变量名
for(char c : s)
{
c = 'a';
}
cout<<s<<endl;//这样s的值不会变
for(char &c : s)
{
c='a';
}
cout<<s<<endl;//这样s的数值才会变
auto语法
auto c = "hello world";
让编译器自动识别 变量 c的数据类型