C++string(3)

我们来看一串代码

int main(void)
{
	string s1;
	s1.reserve(5);
	for (size_t i = 0;i < 15;i++)
	{
		cin >> s1[i];
	}
	return 0;
}

我们输入数的时候编译器会报错,为啥? 

我们在用[]的时候,编译器会去检查是否报错!这个地方我们的size是0

我们只要输入一个数就越界了

当然,如果是at,就会抛异常

那么怎么改呢?

如果我们要用[],那就一定要改变size

所以就可以用resize

int main(void)
{
	string s1;
	s1.resize(5);
	for (size_t i = 0;i < 5;i++)
	{
		cin >> s1[i];
	}
	for (auto e : s1)
	{
		cout << e << " ";
	}
	return 0;
}

 那如果说我一定要用reserve怎么办

那很简单,用push_back

push_back会自动处理size的问题

int main(void)
{
	string s1;
	s1.reserve(5);
	char arr[5];
	for (size_t i = 0;i < 5;i++)
	{
		cin >> arr[i];
		s1.push_back(arr[i]);
	}
	for (auto e : s1)
	{
		cout << e << " ";
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值