头文件:
#include <string>
/*
构造:
1、string () : 创建一个空字符串
2、string (const char * s ) : 字符串s初始化
3、string (const string & str ) : 使用string初始化另一个string
4、string (int n, char c ) :使用n个字符c初始化
*/
//P190 赋值
// 方法一:直接赋值
// 方法二:assign
void test1 ()
{
// 使用assign 进行赋值
string str1;
str1.assign ("张三");
cout << "str1 = " << str1 << endl;
// assign (const char * s, int n);
// 字符串的前 n 个字符进行赋值
string str2;
str2.assign ("1234567890", 4);
cout << "str2 = " << str2 << endl;
// assign (另外一个字符串)
string str3;
str3.assign (str2);
cout << "str3 = " << str3 << endl;
// assign (int n, char ch);
// 使用n个字符ch 填充
string str4;
str4.assign (10, 'W');
cout << "str4 = " << str4 << endl;
}
// P191 拼接
// 方法一: +=
// 方法二: append
void test2 ()
{
string str1 = "e";
str1 += "sdfs";
cout << "str1 = " << str1 << endl;
// append (const char * s)
str1.append("asfnjdk");
cout << "str1 = " << str1 << endl;
// append (const char * s, int n)
str1.append ("dhsg", 1);
cout << "str1 = " << str1 << endl;
string str2 = "sjgushuha";
str1.append (str2, 0, 3); // 方法一
// 格式字符串二, 从0位置开始, 截取三个字符个数
// str1.append(str2.substr(0, 3)); // 方法二
// error:str1.append (str2, 3);
cout << "str1 = " << str1 << endl;
// 再举一个例子
str1.append (str2, 4, 3);
cout << "str1 = " << str1 << endl;
}
// 查找
void test3 ()
{
// 找到返回初始位置, 否则返回-1
string str1 = "asdfgfhghfgjg";
int pos = str1.find ("fg"); // 从左往右
cout << "pos = " << pos << endl;
pos = str1.rfind ("fg"); // 从右往左
cout << "pos = " << pos << endl;
}
// 替换
void test4 ()
{
// 将所有字符串全部替换
string str1 = "asdfgfhghfgjg";
str1.replace (1, 3, "1111");
cout << "str1 = " << str1 << endl;
}
// 比较
void test5 ()
{
string str1 = "dsgh";
string str2 = "dsuhu";
cout << str1.compare (str2) << endl;
}
// 单个字符存取
void test6 ()
{
string str1 = "dsgh";
// 1、通过[]访问单个字符
for (int i = 0; i < str1.size (); i++)
cout << str1[i] << " ";
cout << endl;
// 2、通过at方式访问单个字符
for (int i = 0; i < str1.size (); i++)
cout << str1.at(i) << " ";
cout << endl;
// 修改
str1[0] = '2';
cout << "str1 = " << str1 << endl;
str1.at(2) = '3';
cout << "str1 = " << str1 << endl;
}
// 插入删除
void test7 ()
{
string str1 = "dsgh";
// 插入
str1.insert (1, "111");
cout << "str1 = " << str1 << endl;
// 删除
str1.erase (1, 3);
cout << "str1 = " << str1 << endl;
}
// 子串获取
void test8 ()
{
string str1 = "dsgh";
string subStr = str1.substr(1, 3);
cout << "subStr = " << subStr << endl;
string str2 = "hysyu bshdfb";
int pos = str2.find ("d");
subStr = str2.substr(0, pos);
cout << "subStr = " << subStr << endl;
}