C++将username部分用*取代

C++将username部分用*取代

简要:非常多时候中奖用户并不希望让别人知道他的ID。程序中我们就将他们的账号部分设置为*号显示。

比如:王小二->王*二

    asadjsahd->a*********d

代码:

#include<string.h>
#include<stdlib.h>
#define toStar(str,start,end) \
	do{ \
	for(int i=start;i<end;i++)\
		{ \
		str[i] = '*';\
		} \
	}while(0)
//GBK
const char* toStarString(const char* username)
{
	int len = strlen(username);
	char *starName = new char[len+1];
	strcpy(starName,username);
	int start = 1;       //默认保留头尾字符
	int end = len - 1;

	unsigned char ch = starName[0];                 //取头字符
	//if(isalnum(ch)) {toStar(starName,3,len-3);}
	if ( ch >= 0xB0 && ch <= 0xF7 )             //推断头是否为汉字
	{
		//继续检查下一个字符能否组织成汉字
		unsigned char ch1=starName[1];
		if ( ch1 >=0xA1 && ch1 <= 0xFE )
		{
			start = 2;
		}
	}
	ch = starName[len-1];           //尾字符
	if(ch >=0xA1 && ch <= 0xFE)
	{
		unsigned char ch1=starName[len-2];
		if ( ch1 >= 0xB0 && ch1 <= 0xF7 )
		{
			end = len - 2;
		}
	}

	if(start<=end-1) toStar(starName,start,end);
	else toStar(starName,end,len);
	return starName;
}
//Unicode
const wchar_t* toStarUn(const wchar_t* username)
{
	int len = wcslen(username);
	wchar_t *starName = new wchar_t[len+1];
	wcscpy(starName,username);
	if(len>2) toStar(starName,1,len-1);
	else if(len == 2) toStar(starName,1,len);
	return starName;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109196.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月11日 下午6:00
下一篇 2021年9月11日 下午7:00


相关推荐

  • python监控网页变化教程_Python实时监控网站浏览记录实现过程详解

    python监控网页变化教程_Python实时监控网站浏览记录实现过程详解需求:(1)获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间,并存在一个txt文件中(2)将这个txt文件发送给指定的邮箱地址(你的邮箱)(3)建立例行任务,每天定时自动完成这些操作,你就可以通过邮件查看你对象每天看啥了准备macOSSierraPython3.6Chrome发送邮件的qq邮箱地址qq邮箱授权码SMTP服务器地址:smtp.qq.com接受邮件的邮箱地…

    2022年7月16日
    20
  • Web容器是什么?

    Web容器是什么?在学习之前 我们想想什么是 Web 容器 以及怎么学习 Web 容器 在学习一门技术之前 想想这两个问题 可以达到事半功倍的效果 让我们回顾一下 web 技术的发展历史 可以帮助你理解 web 容器的由来 早期的 web 应用主要应用于浏览静态网页 HTTP 服务器 比如 Apache Nginx 向浏览器返回静态 HTML 浏览器负责解析 HTML 将结果呈现给用户 随着互联网发展 我们已不满足于仅仅浏览静态网页 还希望通过一些交互操作来获取动态结果 因此也就需要一些扩展机制能够让 Http 服务器调用服务端程序

    2026年3月16日
    2
  • kettle工具使用及集成[通俗易懂]

    kettle工具使用及集成[通俗易懂]kettle简介Kettle是一款免费开源的基于Java的企业级ETL工具,功能强大简单易用,无可抗拒。

    2022年10月9日
    5
  • 分布式Session一致性入门简介

    Session简介是什么?Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息;Session表示一个特定的时间间隔,可以指用户从登陆系统到注销退出系统之家的时间。为什么出现?因为http 是一种无状态协议,如果没有Session的话,服务器无法识别请求是否来自同一个用户! 在一些业务场景中需要知道前面的操作和后台的操作是不是同一个用户…

    2022年2月27日
    48
  • ManagementObject 参数 WMI 一些参数(Win32_Service)「建议收藏」

    ManagementObject 参数 WMI 一些参数(Win32_Service)「建议收藏」classWin32_Service:Win32_BaseService{ booleanAcceptPause; booleanAcceptStop; stringCaption; uint32CheckPoint; stringCreationClassName; stringDescription; booleanDesktopInteract; stri

    2022年10月2日
    4
  • 物联网架构方案思考「建议收藏」

    物联网架构方案思考「建议收藏」1.前言1.1.系统设计有无通用方案?一般的IT系统,稍微复杂一些,都会存在一个架构。架构在初期可能不觉得有多么重要,但随着业务发展,架构可能成为系统开发的瓶颈,导致无法再迭代下去。不同的系统,会有不同的架构,即使同一个系统,由不同的架构师设计也会有不同的架构。架构不存在正确与否的,只能说在不同的场景,存在优劣之分。如何设计一个系统,此问…

    2026年1月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号