c/c++生成不重复的字符串(6个字符组成,可表示的个数可以扩充),简易版数据库主键
2015-09-29 11:08
531 查看
#include<stdio.h> #include<stdint.h> #include<math.h> #include<string> #include<iostream> #include<vector> using namespace std; string random_uuid_6(); #define MAX 10000 int main() { vector<string> vec; for(int i=0;i<MAX;++i) { string str=random_uuid_6(); vec.push_back(str); cout<<str<<endl; cout<<str<<endl; } for(vector<string>::iterator it=vec.begin();it!=vec.end();++it) { size_t count=0; for(vector<string>::iterator ij=vec.begin();ij != vec.end();++ij) { if(*it == * ij) { count++; } if(count>=2 ) { cout<<"count"<<count<<" "<<"有重复"<<endl; return -1; } cout<<count<<endl; } } return 0; } /************************************************************************/ /* */ /************************************************************************/ string random_uuid_6() { char result[7]={0}; char * result_tmp=&result[5]; uint32_t factor_encry=2863314058; //rao luan yin zi static uint32_t flag=0; char chs[]= { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z','+','-'}; //64jinzhi ++flag; //取62进制,以6位一个单位换算 uint32_t factor=(int)(pow(2.0,0)+pow(2.0,1)+pow(2.0,2)+pow(2.0,3)+pow(2.0,4)+pow(2.0,5)); for(int i=0;i<6;++i) { uint32_t data=pow(2.0,i*6)*factor; uint32_t flag_encry=factor_encry ^ flag; uint32_t tmp=data & flag_encry; tmp=tmp >> i*6; *result_tmp--=chs[tmp]; } return string(result); }
相关文章推荐
- c++ 运算符优先级
- 黑马程序员—C语言指针的了解和使用
- C语言 工具栏创建
- C++中文件按行读取和逐词读取
- C/C++指针与数组
- C++使用SQLite3心得 -- sqlite3以二进制形式存取图片(MFC,CppSQLite3U封装类)
- KMP算法(C++实现)
- C++ - string::push_back
- C++类static C语言static
- 黑马程序员——C语言基础---数组2
- 用栈实现四则运算表达式(c++)
- LeapYearJudge----C++
- C++ - ofstream和ifstream函数详细用法
- c++任意类型Any类的实现
- c++实现反射类
- C++ Primer 学习笔记_35_STL实践与分析(9)--map种类(在)
- C++中输出有效数值位数问题
- 黑马程序员——C语言基础---数组1
- 上机实践 - - 一个例子了解C/C++中指针与数组的区别
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程