在 C 11 中生成一个随机字符串?

新手上路,请多包涵

我需要使用 C++11 生成随机字符串的帮助。

我不知道如何继续,如果你能帮助我,请。

 #include <random>
char * random_string()
{

        static const char alphabet[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    static const MAX_LEN = 32;  //MAX LENGTH OF THE NEW CHAR RETURNED
    int stringLength = sizeof(alphabet)/sizeof(alphabet[0]);

    for (int i = 0; i<=MAX_LEN;i++)
    {
        //now i don't know what i need to do help!
    }

    static const char test[MAX_LEN];

    return test;

}

原文由 akroma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
1 个回答

返回 std::string 而不是原始的 char * 。根据需要填充字符串以开始,然后随机播放。

例如;

 #include <random>
#include <string>

std::string random_string()
{
     std::string str("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");

     std::random_device rd;
     std::mt19937 generator(rd());

     std::shuffle(str.begin(), str.end(), generator);

     return str.substr(0, 32);    // assumes 32 < number of characters in str
}

如果您确实需要从 --- 提取原始 const char * std::string 使用其 c_str() 成员函数。

 int main()
{
    std::string rstr = random_string();

    some_func_that_needs_const_char_pointer(rstr.c_str());
}

原文由 Peter 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题