gpt4 book ai didi

c++ - 断言错误,字符串下标超出范围

转载 作者:行者123 更新时间:2023-11-30 02:02:21 25 4
gpt4 key购买 nike

我几乎完成了这个菜单,并按照我想要的方式工作。但是,当我在没有输入任何内容的情况下按 Enter 时,出现断言错误。这是代码

#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
#include <iomanip>


using namespace std;

bool menu ()
{
string input = "";
bool exitVar;

do
{
system("cls");

cout << " _ _ _ _ _ _ _ _ " << endl
<< " |_|_ _|_| |_| |_|_ |_| |_|_|_| " << endl
<< " |_|_|_|_|_| |_| |_|_|_ |_| |_|_ " << endl
<< " |_| |_| |_| |_| |_| |_|_|_| |_|_| " << endl
<< " |_| |_| |_| |_| |_|_| |_|_ _ " << endl
<< " |_| |_| |_| |_| |_| |_|_|_| " << endl
<< " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " << endl
<< " _|_|_| |_| |_| |_|_|_| |_|_|_| |_|_|_ |_|_|_| |_|_|_ " << endl
<< " |_|_ |_| _ |_| |_|_ |_|_ |_|_|_| |_|_ |_|_|_| " << endl
<< " |_|_ |_|_|_|_|_| |_|_| |_|_| |_|_| |_|_| |_|_|_ " << endl
<< " _ _|_| |_|_| |_|_| |_|_ _ |_|_ _ |_| |_|_ _ |_| |_|_ " << endl
<< " |_|_| |_| |_| |_|_|_| |_|_|_| |_| |_|_|_| |_| |_| " << endl;

cout << "\n Welcome to Psuedo Mine Sweeper!!\n\n\n\n";

cout << " <S>TART"
<< "\n\n <E>XIT\n\n";



cout << "\t\t\tPlease enter a valid menu option: ";
getline(cin,input);

input[0] = toupper(input[0]);

}while(input[0] != 'S' && input[0] != 'E' || input.length() != 1 || cin.peek() != '\n');

if (input[0] == 'S')
exitVar = true;
else
exitVar = false;

return exitVar;

我在调试断言值方面经验不足。我尝试独立运行菜单

最佳答案

这里的问题是,当您按下回车键时,getlineinput 设置为空字符串,因为没有输入任何内容。

这意味着它的长度为 0,但是当您调用 input[0] 时,您要求的是其中的第一个字符。由于它没有,因此会引发断言错误。

要解决这个问题,调用 getline 后检查 input 是否为空,如果是,使用 continue 开始循环再次。

关于c++ - 断言错误,字符串下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com