最近專案中有一個需要使用QT生成固定長度隨機字串的需求,需求也很簡單,就是生成一個n位的僅包含0-9以及大寫字母的字串,因為這也是第一次使用QT自身的隨機數,這裡就做一下簡單記錄。
廢話不多說,直接上程式碼。
1 QString getRandomString(int length) 2 { 3 qsrand(QDateTime::currentMSecsSinceEpoch());//為隨機值設定一個seed 4 const char chrs[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 5 int chrs_size = sizeof(chrs); 6 7 char* ch = new char[length + 1]; 8 memset(ch, 0, length + 1); 9 int randomx = 0; 10 for (int i = 0; i < length; ++i) 11 { 12 randomx= qrand() % (chrs_size - 1); 13 ch[i] = chrs[randomx]; 14 } 15 16 QString ret(ch); 17 delete[] ch; 18 return ret; 19 }
這段程式碼邏輯也很簡單,以當前的時間戳作為種子進行隨機數發生器初始化,並設定要生成的字串要包含的字元的字符集,然後在字元中隨機取出特定個數的字元拼接起來即可。