当前位置:项目开发->项目经验 ->C++实现指定长度来生成随机字符串的功能

原创版权标志C++实现指定长度来生成随机字符串的功能

作者:codexia  发表时间:2018/7/9 17:12:26  阅读:
[摘要] 今天的任务是用C++实现指定长度来生成随机字符串的功能,字符串分为纯数字字符串、纯小写字母字符串和纯大写字母字符串。
使用支付宝扫码领红包,余额宝付款才可以使用红包哦!不要忘记哈。每天扫一次,天天赚红包!!可以将二维码保存到手机,每天直接扫码领红包啦!!
    悯农
    春种一粒粟,
    秋收万颗子。
    四海无闲田,
    农夫犹饿死。
    好有感觉的诗,想想自己,好像陷入了思索。。。
    不对,不对,今天不是来吟诗作对的,是带有任务的,不然地主得打死我的!!!
    好了,今天的任务是用C++实现指定长度来生成随机字符串的功能,字符串分为纯数字字符串、纯小写字母字符串和纯大写字母字符串。至于更多功能,就不在今天的代码里涉及啦。
    为了能够吃好一顿饱饭,现在必须开始工作了。码农,好心酸的哟。
    随机数的函数有srand和rand,分别是种种子和产生随机数。种种子我们选用公正的时间种子,所以使用time.h。
    代码如下:
#include <iostream>
using namespace std;
#include <time.h>
string get_rand_str(int len, int mode = 0)
{
 char base;
 int range;
 //选择一亩田,准备耕种。选择随机模式:纯数字随机字符串、小写字母随机字符串和大写字母随机字符串
 switch (mode)
 {
 case 0:
 {
 base = '0';
 range = 10;
 break;
 }
 case 1:
 {
 base = 'a';
 range = 26;
 break;
 }
 case 2:
 {
 base = 'A';
 range = 26;
 break;
 }
 }
 len++;
 srand((int)time(0));//种下一颗种子,等待发芽
 unsigned char * p = new unsigned char[len];//开垦一块荒地
 memset(p, 0, len);//松好土
 for (int i = 0; i < len - 1; i++)//开始播种和灌溉成长
 {
 p[i] = (unsigned char)(base + (rand() % range));
 }
 string str((char*)p);//收割丰收的果实
 delete p;//清理地块
 return str;//背回果实到家,完毕
}

    功能细节,代码都有注释了。需要说明的是,我们是指定长度来生成随机数的,所以我们需要预先分配内存,而不能固定一个数字大小。有了内存分配,我们就需要释放。
    为了最后能够顺利的将结果背回家,我们将果实打包给string对象,再将string对象传回。千万不要直接传指针。因为这样你要处理好内存的释放,如果在函数外释放内存,就让内存管理变得不方便,最好是在一个地方处理完毕,以免产生内存泄漏。
    我们代码里添加了类型强制转换,是因为VS2017限制比较严格,我们就主动进行类型转换,以免警告。
    好了,就说到这吧。继续码代码了,码农的生活,真精彩哈~~~
微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)