c++ - 如何限制字符长度
问题描述
我知道人们会立即看到标题并说:“使用字符串”或“字符只能是 1 的长度”,但这些都有问题。
首先,由于稍后在代码中使用 switch 语句,我的变量必须保留为 char 以便它不会导致任何错误,对于测试期间的第二个答案,我发现即使我输入了多长度输入它只会将每个字符分别运行到我不希望发生的 switch 语句中。欢迎任何帮助,哦,这是代码:
char input;
do {
cout << "Please enter a number from 1 to 4.";
cin >> input;
if (sizeof(input)!=1) {
cout << "Please just enter a number";
}
else {
switch (input) {
case '1': {
cout << "One";
break;
}
case '2': {
cout << "Two";
break;
}
case '3': {
cout << "Three";
break;
}
case '4': {
cout << "Four";
break;
}
default:
cout << "Enter only a number from 1-4!";
}
}
} while ((input) != '4');
请注意,我至少尝试过使用 strlen 和 size 函数,但无济于事。
解决方案
好吧,使用string
, 因为char
长度只能是 1。
std::string input;
std::cin >> input;
if (input.size() != 1) {
std::cout << "Wrong input";
} else {
switch (input.front()) {
case '1':
// ...
}
}
推荐阅读
- python - 拆分我的数据框并自动执行我的绘图
- node.js - 如何在 graphql 解析器中返回错误和数据?
- python-3.x - 在所有列中创建具有连续 NaN 值的元组列表
- r - 在R中没有for循环的迭代采样
- forms - DCA 文件导致构建错误
- kubernetes - 是否可以在 pod 中使用“systemctl”?
- javascript - Angular 6 单元测试:如何使用 test.ts 运行业力测试
- php - acf_add_option() 未在管理仪表板中显示任何选项
- sql - 将逗号分隔的列数据拆分为具有 50 多个字段的附加列
- jquery - 如何在按下的按钮上动态设置类?