C++的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;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值