标签:term return string int pos Linux 控制台 输入
Linux控制台接收用户输入不进行显示回显,类似密码输入效果
提示:本文参考网络源码进行修改完善。
文章目录
- Linux控制台接收用户输入不进行显示回显,类似密码输入效果
- 一、C++代码可以去除字符串中的回车、空格、tab等字符
- 二、以下函数可以用来控制命令行输入显示状态及是否显示及回显等
- 三、以下函数获取用户输入,可以控制显示方式,如用户名进行输入显示、密码等不进行显示
一、C++代码可以去除字符串中的回车、空格、tab等字符
string& trim(string &str, string::size_type pos = 0)
{
static const string delim = " \n\t"; //删除空格或者tab字符
pos = str.find_first_of(delim, pos);
if (pos == string::npos)
return str;
return trim(str.erase(pos, 1));
}
二、以下函数可以用来控制命令行输入显示状态及是否显示及回显等
#define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
int set_disp_mode(int fd,int option)
{
int err;
struct termios term;
if(tcgetattr(fd,&term)==-1)
{
perror("Cannot get the attribution of the terminal");
return 1;
}
if(option)
term.c_lflag|=ECHOFLAGS;
else
term.c_lflag &=~ECHOFLAGS;
err=tcsetattr(fd,TCSAFLUSH,&term);
if(err==-1 && err==EINTR)
{
perror("Cannot set the attribution of the terminal");
return 1;
}
return 0;
}
三、以下函数获取用户输入,可以控制显示方式,如用户名进行输入显示、密码等不进行显示
string getUserInput(bool bShow)
{
set_disp_mode(STDIN_FILENO,bShow);
char password[256];
int c;
int n = 0;
do{
c=getchar();
if (c != '\n'|c!='\r'){
password[n++] = c;
}
}while(c != '\n' && c !='\r' && n < (256 - 1));
password[n] = '\0';
set_disp_mode(STDIN_FILENO,1);
string strReture=string(password);
return trim(strReture);
}
提示:这里采用大小为256的字符数组存储输入的字符串,可以根据实际数据进行增加减少
标签:term,return,string,int,pos,Linux,控制台,输入 来源: https://blog.csdn.net/m0_50075609/article/details/116641228
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。