防止用户在 c++ 中输入某些字符
Preventing user from inputting certain chars in c++
我对 c++ 很陌生,所以请理解我的问题可能很愚蠢。
我需要创建一个函数,该函数从用户那里获取一个表格并仅用特定字符填充它。假设用户需要输入他的名字。如果用户输入从A到Z(或A到Z)的字符,则该字符应显示在屏幕上,在这种情况下 - 一切都很好。问题是 - 当用户输入禁止的字符(例如 1-9)时,这不应该显示在屏幕上,光标应该保持在同一位置)。
你们知道怎么做吗?
也许你可以用它来完成你的工作:
char ch;
while(ch = getch())
{
if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z'))
{
cout << ch;
}
}
这将仅打印 [A-Z][a-z]。您还可以存储所需的字符以供进一步使用。
在Windows上,您可以使用conio.h。
此外,您可以重载istream::operator>>
函数,使解决方案更加优雅和易于使用:
完整示例:
#include <iostream>
#include <conio.h>
using namespace std;
struct person_t
{
string name;
string last_name;
};
// This is the function you're looking for.
void get_filtered_string(string &str)
{
char c;
str = "";
do
{
c = _getch();
if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
{
putchar(c); // 1
str.push_back(c);
}
} while (c != 'r'); // 2
}
istream &operator>>(istream &stream, person_t &person)
{
string str = "";
cout << "Enter name: ";
get_filtered_string(str);
person.name = str;
cout << endl;
cout << "Enter last name: ";
get_filtered_string(str);
person.last_name = str;
cout << endl;
return stream;
}
int main()
{
person_t person;
cin >> person;
cout << person.name.c_str() << " " << person.last_name.c_str() << endl;
return 0;
}
将字符输出到屏幕。
在 Windows 中,当您按 Enter 键时,您将按该顺序引入两个字符
'r'
和'n'
。这就是为什么我们在这里检查'r'
.
相关文章:
- 无法在 C++ 中输入字符数组
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 在不使用字符串库的情况下输入字符*
- 为什么当我输入字符时,这个特定的 cin.get() 语句在C++中不起作用?
- C++中输入字符数组的特定验证
- 如果用户在 int 中输入字符,如何使用输入
- 当我们在以下程序(C )中输入字符时,该如何解决
- 如何在结构中输入字符到向量
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- 输入字符时忽略回车键
- 在 switch 语句中输入字符以进行C++时用户输入错误
- 使用Back_inserter从任何位置的输入字符中使用Back_inserter进行过滤数组字符串
- 如何在应该显示的printf之前输入字符
- C++ 输入字符而不是 int 会导致无限循环.如何检查错误的输入
- 为什么"keep_window_open()"不等待输入字符?
- 为什么我的程序在输入字符时有一个无限循环
- 当提示输入整数值时输入字符时,为什么程序会中断
- 关闭回显后如何再次回显输入字符
- 忽略输入字符
- 从文件的单行读取输入字符