C++,一直显示下角标长度超出

输入字符串str1(字符串长度>10)和数字n,如果n小于字符串长度,将字符串前n个字符前后顺序反转存储在字符串str2中,并输出(不要求输入中文,比较难),否则输出“输入数字大于字符串长度,不能逆序操作”。


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string str1,str2;
    int n;
    cin >> str1;
    cin >> n;
    
    if(n>str1.size())
    {
        cout << "输入数字大于字符串长度,不能逆序操作";
        return 1;
    }
    str2=str1.substr(0,n);
    reverse(str2.begin(),str2.end());
    cout << str2;

    return 0;
}

字符串一般赋值后会自动在结尾加一个'\0',所以你进行字符串操作时会发现长度比实际+1.
因此用char定义的时候就要多一位