class string类型
string的说明
string类型就是我们用的字符串,我们在程序跑的时候,很多时候都是用到的字符串,比如一个文件的路径,比如一个csv文件,就是一个89,90,90,。也可以看作是一个字符串,因为他并不是二进制的数据格式,什么文本格式,就是我们看到的字符串类型。是我们在写程序中用到最多的。
常见的问题:char* 和string的关系
//char* 转string
char a[] = "没有用的";
string st(a);
//string 转 const char*
const char* aa = ss.c_str();
const char* aa2 = ss.data();
//使用copy不会拷贝'\0'
char aa1[10]{ 0 };
ss.copy(aa1, 10);
函数表
string的构造函数和析构函数
//大小
//大小
void test02()
{
//string能够包含的最大字符数
string ss = "12345";
cout << ss.max_size() << endl;
//size()和lengh()返回现有的字符数
cout << ss.size() << endl;
cout << ss.length() << endl;
//判断是否为空
cout << ss.empty() << endl;
//分配容量
ss.reserve();
ss.shrink_to_fit();
cout << ss.capacity() << endl;
ss.reserve(100);
cout << ss.capacity() << endl;
}
//访问元素
//访问元素
void test03()
{
string str = "0123456789";
string str2 = "9876543210";
//通过[]或者at
cout << str[5] << endl;
cout << str.at(5) << endl;
//front和back,头元素和胃元素
cout << str.front() << endl;
cout << str.back() << endl;
//交换两个字符串
str.swap(str2);
cout << str << endl;
}
//比较
//比较
void test04()
{
string str1 = "9876543210";
string str2 = "0123456789";
//==等于
if (str1 == str2);
//>=,>,<,<=
string s("abcba");
//返回值不是bool,0表示相等,
s.compare("abcd");
cout << s.compare(0, 2, s, 0, 2) << endl; //左右比较
cout<< s.compare(1, 2,"bcx",2) << endl; //比较指定的字符长度
}
//更改
//更改
void test05()
{
string str1 = "abc";
string str2 = "123";
//赋值
str1 = str2;
str1 = "456";
//交换
str1.swap(str2);
//为空
str1 = "";
str1.clear();
str1.erase();
//插入
str1 += "xyz";
str1.append("nice", 5);
str1.append(5, 'x');
str1.push_back('\n');
str1.insert(1, "789");
//移除
str2.replace(1, 2, "xyz");
str2.erase(5);
str2.erase(7, 5);
str2.pop_back();
}
//字串
//字串
void test06()
{
string str1("123456789");
str1.substr(5);
str1.substr(5, 2);
str1.substr(str1.find('5'));
}
//搜索与查找
//搜索与查找
//搜索与查找
void test07()
{
string str1 = "abcdefg";
//1.成员函数
size_t id=str1.find('c');
id=str1.rfind("de");
str1.find_first_of("cf");//查找str1中找第一个等于'c'或者'f'的位置
str1.find_last_of("cf");//查找str1中找最后一个等于'c'或者'f'的位置
//2.正则表达式
//3.stl算法
}
//npos的意义
//npos的意义
void test08()
{
//string::npos
string str("jkl");
size_t id = str.find("io");
if (id == std::string::npos)//npos设置是-1,而find返回值是无符号的数
{
}
}
//类型的转化
由于vs好像对stoi()存在问题,这里就不适用这个演示了。
//类型的转化
void test09()
{
//自动跳过前面的任意空格
//如果无法转化,抛出std::invalid_argument,超出数值的范围,抛出std::out_of_range
string str1 = " 987654";
cout << std::atoi(str1.c_str()) << endl;
cout << std::atof(" 0.6956") << endl;
cout << std::atoi("a啊a234") << endl;
}