我们来看一串代码
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;
}