目录
3.1.2string构造函数
string(); 创建一个空的字符串
string(const char* s); 使用字符串s初始化
string(const string& str); 使用一个string对象初始化另一个string对象
string(int n, char c); 使用n个字符c初始化
#include <iostream>
#include <string>
using namespace std;
//string(); 创建一个空的字符串
//string(const char* s); 使用字符串s初始化
//string(const string& str); 使用一个string对象初始化另一个string对象
//string(int n, char c); 使用n个字符c初始化
//string的构造函数
void test01()
{
string s1;//默认构造
const char*str = "hello world";
string s2(str);
cout << s2 << endl;
string s3(s2);
cout << s3 << endl;
string s4(10, 'a');
cout << s4 << endl;
}
int main() {
test01();
system("pause");
}
3.1.3 string赋值操作
string &operator = (const char* s); char*字符串类型 赋值给当前的字符串
string &operator = (const string &s); 把字符串s赋值给当前的字符串
string &operator = (char c); 字符串赋值给当前的字符串
string &assign = (const char* s); 把字符串s赋值给当前的字符串
string &assign = (const char* s,int n); 把字符串s的前n个字符赋值给当前的字符串
string &assign = (const string &s); 把字符串s赋值给当前的字符串
string &assign = (int n,char c); 用n个字符c赋值给当前的字符串
#include <iostream>
#include <string>
using namespace std;
//string &operator = (const char* s); char*字符串类型 赋值给当前的字符串
//string &operator = (const string &s); 把字符串s赋值给当前的字符串
//string &operator = (char c); 字符串赋值给当前的字符串
//string &assign = (const char* s); 把字符串s赋值给当前的字符串
//string &assign = (const char* s,int n); 把字符串s的前n个字符赋值给当前的字符串
//string &assign = (const string &s); 把字符串s赋值给当前的字符串
//string &assign = (int n,char c); 用n个字符c赋值给当前的字符串
void test01()
{
string str1;
str1 = "hello world";
cout << "str1 = " << str1 << endl;
string str2;
str2 = str1;
cout << "str2 = " << str2 << endl;
string str3;
str3 = 'a';
cout << "str3 = " << str3 << endl;
string str4;
str4.assign("hello c++");
cout << "str4 = " << str4 << endl;
string str5;
str5.assign("hello c++",5);
cout << "str5 = " << str5 << endl;
string str6;
str6.assign(str5);
cout << "str6 = " << str6 << endl;
string str7;
str7.assign(5, ' ');
cout << "str7 = " << str7 << endl;
}
int main() {
test01();
system("pause");
}
3.1.4 string字符串拼接
string& operator+=(const char* s); 重载+=操作符
string& operator+=(const char c); 重载+=操作符
string& operator+=(const string &s); 重载+=操作符
string& append(const char* s); 把字符串s连接到当前字符串末尾
string& append(const char* s,int n); 把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s); 同operator+=(const string &s)
string& append(const string &s,int pos,int n); 字符串s中从pos开始的n个字符串连接到字符串末尾
#include <iostream>
#include <string>
using namespace std;
//string& operator+=(const char* s); 重载+=操作符
//string& operator+=(const char c); 重载+=操作符
//string& operator+=(const string &s); 重载+=操作符
//string& append(const char* s); 把字符串s连接到当前字符串末尾
//string& append(const char* s,int n); 把字符串s的前n个字符连接到当前字符串结尾
//string& append(const string &s); 同operator+=(const string &s)
//string& append(const string &s,int pos,int n); 字符串s中从pos开始的n个字符串连接到字符串末尾
void test01()
{
string str1 = "我";
str1 += "爱玩游戏";
cout << "str1 = " << str1 << endl;
string str2 = ": LOL & DNF";
str1 += str2;
cout << "str1 = " << str1 << endl;
string str3 = "I";
str3.append("love");
cout << "str3 = " << str3 << endl;
str3.append("game abcde", 4);
cout << "str3 = " << str3 << endl;
str3.append(str2);
cout << "str3 = " << str3 << endl;
str3.append(str2, 1, 4);//参数二是从哪个位置开始截 参数三是你截取的字符个数
cout << "str3 = " << str3 << endl;
}
int main() {
test01();
system("pause");
}
3.1.5 string字符串查找和替换
1、查找
rfind和find的区别
rfind是从右往左查找 find是从左往右查找
在查找不到后会返回一个值-1
2、替换
str1.replace(1, 3, "1111");//从1位置起 三个字符 替换为1111
#include <iostream>
#include <string>
using namespace std;
//字符串查找和替换
//1、查找
void test01()
{
string str1 = "abcdefg";
int pso = str1.find("de");
if (pso == -1)
{
cout << "未找到字符串" << endl;
}
else {
cout << "找到了字符串,下标为:" << pso << endl;
}
//rfind和find的区别
//rfind是从右往左查找 find是从左往右查找
pso = str1.rfind("fg");
cout << "找到了字符串,下标为:" << pso << endl;
}
//2、替换
void test02()
{
string str1 = "abcdefg";
str1.replace(1, 3, "1111");//从1位置起 三个字符 替换为1111
cout << "str1 = " << str1 << endl;
}
int main() {
test02();
test01();
system("pause");
}
3.1.6 string字符串比较
字符串是根据ASCII码来比较的
= 返回0;>返回1;<返回-1
函数原型:int compare(const string &s) const;
int compare(const char &s) const;//主要用于判断字符串是否相等
#include <iostream>
#include <string>
using namespace std;
//字符串比较
void test01()
{
string str1 = "hello";
string str2 = "hello";
if (str1.compare(str2) == 0)
{
cout << "str1 等于 str2" << endl;
}
else if(str1.compare(str2) > 0)
{
cout << "str1 大于 str2" << endl;
}
else if (str1.compare(str2) < 0)
{
cout << "str1 小于 str2" << endl;
}
}
int main() {
test01();
system("pause");
}
3.1.7 string字符串存取
单个字符存取有两种方式:
char &operator[](int n); //通过[]方式取字符
char& at(int n); //通过at方式取字符
#include <iostream>
#include <string>
using namespace std;
void test01()
{
string str = "hello";
cout << "str = " << str << endl;
//1、通过[]方式取字符
for (int i = 0; i < str.size(); i++)
{
cout << str[i] << " ";
}
cout << endl;
//2、通过at方式取字符
for (int i = 0; i < str.size(); i++)
{
cout << str.at(i) << " ";
}
cout << endl;
//修改单个字符
str[0] = 'x';
cout << str;
str.at(1) = 'x';
cout << str;
}
int main() {
test01();
system("pause");
}
3.1.8 string插入和删除
插入insert 删除erase
#include <iostream>
#include <string>
using namespace std;
void test01()
{
string str = "hello";
//插入
str.insert(1, "111");
cout << "str = " << str << endl;
//删除
str.erase(1, 3);
cout << "str = " << str << endl;
}
int main() {
test01();
system("pause");
}
3.1.9string子串
string substr(int pos = 0, int n = pos)const;//返回由pos开始的n个字符组成的字符串
#include <iostream>
#include <string>
using namespace std;
void test01()
{
string str = "abcdef";
string subStr = str.substr(1, 3);
cout << "subStr = " <<subStr<< endl;
}
void test02()
{
//从邮件中 获取 用户名信息
string email = "hello@sina.com";
int pos = email.find("@");
string useName = email.substr(0, pos);
cout << "useName = " << useName << endl;
}
int main() {
test01();
test02();
system("pause");
}