STL-容器 - string
字符串必须具备结尾字符\0
#include<iostream>
#include<string>
using namespace std;
//STL-容器 - string
char ch[101];//字符串必须具备结尾字符\0
int main() {
int n; cin >> n;
for (int i = 0; i < n; i++) {
cin >> ch[i];
}
cout << ch << endl;
return 0;
}
有两个以上的字符串用getline()
void test02() {
string s1, s2;//底层是由char ch[]实现
getline(cin, s1);//遇到回车输入结束
//cin >> s1;//遇到空格或者回车,结束
//getchar();//吃掉cin之后产生的换行符
getline(cin, s2);
cout << s1 << endl << s2 << endl;
}
void test03() {
string s;
cin >> s;
//把string当成字符数组使用
for (int i = 0; i < s.size()/*s.length()*/; i++) {
cout << s[i];
}
}
string的基础操作
void test04() {
string s1, s2;
cin >> s1 >> s2;
//字符串的比较规则:从首位开始逐位比较,若发现某一位不等,则ASCII大的那个字母所在的字符串就是大的
//abcd和abz比,abz大;abcd和abc比,abcd大;
/*if (s1 > s2) {
cout << s1 << ">" << s2 << endl;
}
else if (s1 < s2) {
cout << s1 << "<" << s2 << endl;
}
else cout << s1 << "=" << s2 << endl;*/
//s1 = s1 + " " + s2;//字符串的拼接
//s1 = s2;//字符串的拷贝
cout << s1 << endl;
}
string 的相关函数
s.erase()删除
s.insert()插入
s.find()字符串的查找
s.substr()字符串的截取
sort()排序
reverse()翻转
stoi()字符串转int
stol()字符串转longlong
stod()字符串转double
to_string其他类型转string
void test05() {
string s = "hello world";
s.erase(5, 1);
//s.erase(int pos,int count)从下标pos位置开始删除count个
//s.erase(int pos)从下标pos位置开始删除,删除到最后
s.insert(5, 1, ' ');
//s.insert(int pos,int count,char val) 在下标pos位置插入count个val
cout << s << endl;
}
void test06() {
string s1, s2;
getline(cin, s1);
getline(cin, s2);
//s1.find(s2)在s1中查询s2
//若查找成功,则返回s2第一次在s1中出现时,首字母的下标
//若查找失败,则返回-1
//i love china,i love daqing
//love
int pos = s1.find(s2);
if (pos != -1) {
cout << s2 << " is substr of " << s1 << endl;
cout << "the first pos of s1:" << pos << endl;
}
else cout << "none" << endl;
}
#include<iostream>
#include<string>
using namespace std;
//substr(int pos, int count)从下标pos位置向后截取count个
int main() {
string s = "hello world";
cout << s.substr(0, 5) << endl;
cout << s << endl;//返回截取后的子串,原串不变
return 0;
}
void test07() {
string s;
cin >> s;
//s.begin()指向了首元素迭代器
//s.end()指向了尾元素的下一位迭代器
sort(s.begin(),s.end());//必须和迭代器联合使用
cout << s << endl;
}
void test08() {//字符串数组的排序
string a[10];
int n; cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
sort(a,a+n);
for (int i = 0; i < n; i++) cout<< a[i]<<endl;
}
void test09() {
string s;
cin >> s;
reverse(s.begin(), s.end());
cout << s << endl;
}
void test10() {
string s1 = "123",s2="111";
cout<<stoi(s1) + stoi(s2)<<endl;
//stoi()
//stol()
//stod()
string s3 = "3.14",s4="1.11";
cout << stod(s3) + stod(s4) << endl;
//to_string()
int a = 123; double d = 3.14;
cout << to_string(a) + to_string(d) << endl;
//double默认保留六位小数
}