gpt4 book ai didi

c++ - (c++)输入需要是单个字符,但它接受多个字符并检查第一个字母

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

我构建的程序有问题。它应该从用户那里获取输入并检查它是“P”还是“M”。问题是我只希望它在您输入“P”或“M”时工作,因为现在它接受您输入的任何内容,只要它以“M”开头(例如,如果您输入“莫尔斯”它将接受它作为“M”)。我不是程序员,对 C++ 了解不多,只是为了好玩。它是如何的一个例子:

int main(){
std::cout << "Enter 'M' or 'P'\n";
char slction;
Inputrror:
std::cin >> slction;
switch (slction) {
case 'M':
goto Morse;
break;
case 'm':
goto Morse;
break;
case 'P':
goto Text;
break;
case 'p':
goto Text;
break;
default:
std::cout << "Please only enter 'M' or 'P'\n;
goto Inputrror;
break;
}
Morse:
std::cout << "Morse\n;"
return 1;
Text:
std::cout << "Text\n;"
return 1;
}

编辑:我尝试像建议的那样将输入读取为字符串,现在它可以正常工作了。正确的版本:

int main() {
std::cout << "Enter 'M' or 'P'\n";
std::string slction;

Inputrror:
std::cin >> slction;
if (slction == "M" || slction == 'm') {
goto Morse;
}
else if (slction == "P" || slction == 'p') {
goto Text;
}
else {
std::cout << "Please only enter 'P' or 'M'\n";
goto Inputrror;
}

Morse:
std::cout << "Morse\n";
return 1;

Text:
std::cout << "Text\n";
return 1;

}

最佳答案

在我回答之前先评论一下:

代替

case 'M':
goto Morse;
break;
case 'm':
goto Morse;
break;

你可以用

case 'M':
case 'm':
goto Morse;
break;

break 停止 block ,因此只要您不使用它就可以一个接一个地嵌套。您甚至可以执行以下操作:

case 'M':
cout << "CAPITALIZED";
case 'm':
goto Morse;
break;

现在,对于你的问题:你正在读取一个 char,这意味着它只会接受你输入的第一个字母。如果您也希望能够阅读单词,请改用字符串:

string slction;
cin >> slction;

PD:记得将 case 'M' 和其他选项的引号更改为双引号(对于字符串)

PD2:你不能对字符串使用 switch,所以你必须使用 if/else block

关于c++ - (c++)输入需要是单个字符,但它接受多个字符并检查第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634281/

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