生成随机字符串

估摸着以后极有可能使用到,于是写了一个生成随机字符串的函数。可以自定义生成规则,生成字符串长度。模仿了MS的函数风格,生成规则使用宏的或且规则,返回值使用了布尔型。这里使用布尔返回可能作用不大。直接贴代码吧,同样是两个文件。


RandomString.h
#pragma once
  
#define RdAllType                    0x07    //′óD?D′oíêy×?
#define RdNum                        0x01    //êy×?
#define RdLowercase            0x02    //D?D′
#define RdUppercase            0x04    //′óD′
static TCHAR szAllChar[] = _T("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
  
bool fnRandomString(const int nLeng, TCHAR *RandStringInput, const int nType);




注释用了中文,插件粘贴对中文支持不好:

#define RdAllType                    0x07    //大小写和数字
#define RdNum                        0x01    //数字
#define RdLowercase            0x02    //小写
#define RdUppercase            0x04    //大写

RandomString.cpp
#include "stdafx.h"
#include "RandomString.h"
#include <stdlib.h>
#include <time.h>
  
bool fnRandomString(const int nLeng, TCHAR *RandStringInput, const int nType)
{
    if (0 == nLeng)
    {
        return true;
    }
    if (nLeng < 0)
    {
        return false;
    }
  
    srand((unsigned int)time(NULL));
    bool bRet = false;
    int nMin = 0;
    int nMax = 62;
    switch(nType & RdAllType)
    {
    case RdAllType:
        break;
    case RdNum:
        nMin = 52;
        break;
    case RdNum | RdLowercase:
        nMin = 26;
        break;
    case RdNum | RdUppercase:
        nMin = 26;
        break;
    case RdUppercase:
        nMax = 25;
        break;
    case RdUppercase | RdLowercase:
        nMax = 51;
        break;
    case RdLowercase:
        nMin = 26;
        nMax = 51;
        break;
    default:
        return false;
        break;
    }
  
  
    int nRange = nMax - nMin;
    if (nType == (RdNum | RdUppercase))
    {
        int nNum = 0;
        for (int t = 0; t <= nLeng; t++)
        {            
            nNum = nMin + rand()%nRange;
            if (nNum < 52)
            {
                nNum -= 26;
            }
            RandStringInput[t] = szAllChar[nNum];
        }
    }
    else
    {
        for (int t = 0; t <= nLeng; t++)
        {            
            RandStringInput[t] = szAllChar[nMin + rand()%nRange];
        }
    }
  
    //int tt = 0;
    //while (RandStringInput[tt])
    //{
    //    printf("%c ", RandStringInput[tt]);
    //    tt++;
    //}
  
    return true;
}




VS2010下编译通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值