#include <iostream>
#include <string>
#include <fstream>
const int SIZE = 5;
using namespace std;
void stringTest();
void fileRead();
int main(int argc, const char * argv[]) {
stringTest();
// fileRead();
return 0;
}
void stringTest()
{
char c[] = "asdfghjkl;12345678";
//1、初始化
string fuck = {'a','b','c'};
string tt = "sddfs23daa4a442211f";
string one("dsfsdf3");
string two(3,'d'); //初始化十个元素,默认值'd'
string three(one);
string four;
string list[SIZE]; //5个长度的string数组
string listAll;
//2、赋值
two = "otiit;";
three[0] = 'm';
for (int i = 0; i<SIZE; i++) {
getline(cin, list[i]); //数组逐个元素赋值
four += list[i];
}
cout << "listAll=" << listAll << endl;
getline(cin,four); //一次赋值
cout << four << endl;
cin >> four; //一次赋值
cout << four << endl;
//3、拼接string
one += "11";
four = one+two;
//4、截取
string six(c+2,c+10); //从c+2开始 截取到c+10
string five(c,3); //0开始截取三位
string seven(&tt[3],&tt[6]); //截取第三位到第6位
string eight(tt,5,12); //从第5位开始往后截取12位
//5、替换、修改
three[0] = 'D';
//6、插入
string str1="df dd 24t sdf sadffv";
string str2="agg ssd 34566 ";
cout << str1.insert(14,str2)<<endl; //在字符串指定位置前面插入指定字符串
cout << str1.insert(14,str2,2,9)<<endl; //在字符串指定位置前面插入指定字符串的子串(从指定索引开始的指定个数的字符)
cout << str1.insert(14,"bb cao",5)<<endl; //插入指定字符串的前n个字符
cout << str1.insert(14,6,'*')<<endl; //插入n个相同字符到字符串中
//7、删除
cout <<str1.erase(4,5)<<endl; //删除指定索引开始的指定长度的字符
//8、获取字符串分配的内存大小
string capa("qwertyui123456789,mnbvcxz;;");
string re;
re.reserve(50);
cout << "内存 = " << capa.capacity() << endl;
cout << "请求内存块最小长度 = " << re.capacity() << endl;
//9、字符串比较 size
string aa("asdfgd");
string bb("asdfg");
string cc("asdfgs");
if (aa == bb)
{
cout << "aa等于bb" << endl;
}
if (aa != cc)
{
cout << "aa不等于cc" << endl;
}
if (aa.size() < cc.size()) //leng 较早版本的string类,size提供STL兼容性
{
cout << "aa长度少于cc" << endl;
}
//10、查找字符串,成功返回下标,失败-1
int pod = 2;
int n = 1;
unsigned long zz = aa.find("feea", pod, n); //从字符串的第pod个位置开始,查找 "feea" 的前n个字符组成的字符串
unsigned long xx = aa.find('d'); //匹配字符串是否包含某字符
unsigned long kk = aa.find_first_of('f',2); //从字符串的第pod个位置开始,查找字符首次出现的位置
unsigned long vv = aa.find_last_of('d'); //查找字符最后一次出现的位置
unsigned long nn = aa.rfind('d'); //查找字符最后一次出现的位置
unsigned long mm = aa.find_first_not_of("ascfg"); //查找第一个不包括在字符串中的字符下标
unsigned long ll = aa.find_last_not_of("ascfg"); //查找最后一个不包括在字符串中的字符下标
}
void fileRead()
{
using namespace std;
ifstream fin;
/**
qwer:asdf:zxc:1234:
gfd:jkl:mnb:
*/
//打开文件
fin.open("/Users/Apple/Desktop/精华/C++/C++ string(八)/C++ string(八)/test.txt");
if (!fin.is_open())
{
exit(EXIT_FAILURE);
}
string item;
while (fin) {
//根据:分隔符获取元素
getline(fin,item,':');
cout << item << endl;
}
/**打印
qwer
asdf
zxc
1234
gfd
jkl
mnb
*/
}