string类型总结
比较:
https://blog.csdn.net/snowcatvia/article/details/97623072
y总笔记:
https://www.acwing.com/file_system/file/content/whole/index/content/3589702/
#include<iostream>
#include<string>
using namespace std;
int main()
{
//<string>初始化
string a="nihao" ;//别用单引号 可能报错
string b=a ;
//没有= 直接() ,此时长度为10,若直接c="\0"长度为0
string c(10,'0');
//string d={'n','sn'}//不行
//string的empty 和size
cout << a.empty() << endl;
cout << c.empty() << endl;
cout << c.size() << endl;
//string的比较
//按字典序比较
cout<<(int)'a'<<" "<<int('b')<<" "<<int ('A')<<endl;//97 98 65
a="def";b="DEF" ;//不能重新再定义a,b了
cout<<"判断a>=b: "<<(a>=b)<<endl;//必须加()才能输出
cout<<a.compare(b)<<endl;
//string相加
string s1 = "a, ",s2 = "b";
string s3 = s1 + s2; // s3的内容是 hello, world\n
cout<<"s1="<<s1<<" s2="<<s2<<"\ns3=" <<s3<<endl;
//做加法运算时,字面值和字符都会被转化成string对象,需要保证+两侧至少有一个是string对象
string s4 = s1 + ", "; // 正确:把一个string对象和有一个字面值相加
string s5 = "hello" + ", "; // 错误:两个运算对象都不是string
string s6 = s1 + ", " + "world"; // 正确,每个加法运算都有一个运算符是string
string s7 = "hello" + ", " + s2; // 错误:不能把字面值直接相加,运算是从左到右进行的
// 插入
s1.push_back('a');、、尾插一个字符
str.insert(s.begin()+i,'a')如果前面事s.begin()+i那么只能插入字符;
str.insert(3,"ni");//在指定的位置pos插入字符串
cout<<str;
//string 的读写
cin>>a;
getline(cin,b);//吃掉上一个回车
printf("b=%s b.size=%d\n",b.c_str(),b.size());
getline(cin,b) ;
cout<<"a="<<a<<endl;
printf("b=%s b.size=%d\n",b.c_str(),b.size());
/erase 用指针删 传入某一段/个,用下标删,删除一段长度可传入
string s1 = "123456789";
s1.erase(s1.begin()+1); // 删2结果:13456789
s1.erase(s1.begin()+1,s1.end()-2); // 结果:189//都是闭区间
s1.erase(2,2); //从第二个位置开始是删除2后边的2个位置 // 结果:1256789
s1.erase(1);//删除1,包括1以后的所有值;//结果:
//字符串查找-----找到后返回首字母在字符串中的下标
string s("012 4i6d chicken bird cat");
if(s.find("chicken",0)!=-1)
cout << s.find("chicken") << endl; // 结果是:9
// 从下标为5开始找字符'i',返回找到的第一个i的下标
cout << s.find('i',5) << endl; // 结果是:5
return 0;
}