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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 6种不同画法画平行线_平行线的画法_中小学试题|家庭教育题库|辅导习题「中国戏曲学院附属中等戏曲学校」…

    6种不同画法画平行线_平行线的画法_中小学试题|家庭教育题库|辅导习题「中国戏曲学院附属中等戏曲学校」…平行线怎么画第五章《数学活动1》—-你有几种画平行线的方法【活动理念】通过让学生积极参与此次活动,获得成功的体验,感受活动课的乐趣.通过观察、操作、推理归纳,让学生进一步知道相交线、平行线以及垂线的概念,利用平行线的判定解决一些实际问题,利用平移可以绘制一些优美的图案等.【活动目标】一、知识与技能1、两直线平行的条件,掌握两种以上最快捷的画平行线的方法.2、进一步理解相交线、平行线以及垂线的概…

    2022年9月20日
    2
  • android 定时器

    android 定时器在Android开发中,定时器一般有以下3种实现方法:一、采用Handler与线程的sleep(long)方法二、采用Handler的postDelayed(Runnable,long)方法三、采用Handler与timer及TimerTask结合的方法下面逐一介绍:一、采用Handle与线程的sleep(long)方法Handler主要用来处理接受到的消

    2022年7月25日
    9
  • subdiscipline_Sublime

    subdiscipline_Sublime部分转载自:使用sublime-snippet来快速做前端页面分析在sublime来中,可以通过submlime-snippet来快速补全代码。举个栗子,如果在sublime的存放submlime-snippet的文件夹下有如下的文件(elem-edge.sublime-snippet文件名不重要)ele

    2025年6月13日
    6
  • BAT命令执行JS「建议收藏」

    BAT命令执行JS「建议收藏」bat命令执行JS.bat文件:cscriptWWW.js.js文件:functiondellogfile(beforedays){varfso=newActiveXObject(“Scripting.FileSystemObject”);vardir=fso.GetFolder(“E:\\IISLog\\En”);//改成你…

    2022年9月15日
    4
  • mysql行转列转换

    mysql行转列转换mysql行列转换,在项目中应用的极其频繁,尤其是一些金融项目里的报表。其中最为头痛的就是多行转多列,动态的列行转换。最近在研究这些行里转换,还是从最为简单的行列转换开始。sql脚本–创建表学生表CREATETABLE`student`(`stuid`VARCHAR(16)NOTNULLCOMMENT’学号’,`stunm`VARCHAR(20

    2022年6月14日
    47
  • linux重启网卡命令失败_centos7网卡重启

    linux重启网卡命令失败_centos7网卡重启  首先,命令ifconfig查看网卡状态,发现eth0网卡未启动。  然后,用命令ifupeth0启动网卡。   用命令ifdowneth0则是卸载网卡。转载于:https://www.cnblogs.com/dayboy2416/p/11231314.html…

    2022年9月22日
    5

发表回复

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

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