C++ 按backspace键时字符串长度错误,且字符串小于0 c++;

C++ 按backspace键时字符串长度错误,且字符串小于0 c++;,c++,string,C++,String,当我退格且字符串小于0时,应用程序将显示以下错误 我使用的代码如下所示: #include <iostream> #include <cstdlib> #include <cstring> #include <conio.h> #include <string> using namespace std; int main() { std::string a = ""; char c; for (int

当我退格且字符串小于0时,应用程序将显示以下错误

我使用的代码如下所示:

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
    std::string a = "";

    char c;

    for (int i = 0; i < 1000; i++)
    {
        c = _getch();

        if (c == '\r')
            break;

        if (c == 8)
        {
            cout << '\b';
            cout << ' ';
            cout << '\b';

            a.resize(a.length() - 1);
        }
        else
        {
            cout << "*";
            a += c;
        }
    }

    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
std::string a=“”;
字符c;
对于(int i=0;i<1000;i++)
{
c=_getch();
如果(c=='\r')
打破
如果(c==8)
{

cout不要将大小调整到零以下…这看起来很简单。编辑-也就是说,在减小大小之前检查字符串是否为空。

请注意,这是一个(抛出的异常),不是字符串长度错误,以及“字符串小于0”没有明确的含义。为什么要用空格替换退格符?我对此非常迷茫。您好,我已经更新了我的问题,请您提供建议?您的if位置错误。在当前版本中,如果字符串长度为0,您将永远无法向其添加字符。您可以只需要防止其长度低于零。在编写代码之前,请考虑逻辑。
if (!a.empty())
{
    if (c == 8)
    {
        cout << '\b';
        cout << ' ';
        cout << '\b';

        a.resize(a.length() - 1);
    }
    else
    {
        cout << "*";
        a += c;
    }
}
else
{
    continue;   
}