C++ 按backspace键时字符串长度错误,且字符串小于0 c++;
当我退格且字符串小于0时,应用程序将显示以下错误 我使用的代码如下所示: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
#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;
}