gpt4 book ai didi

c++ - 生成随机字符串并不总是返回正确的长度

转载 作者:太空狗 更新时间:2023-10-29 19:51:23 25 4
gpt4 key购买 nike

我正在做一个需要生成随机字符串的项目。它大部分时间都在工作,除了某些原因,有时返回的字符串长度不正确。

我的代码

string HelperMethods::generateRandomString(int length)
{
static const char alphanum[] =
"0123456789abcdefghijklmnopqrstuvwxyz";

stringstream randomString;

//Generate a seed for the random number generator
srand(time(0));
for (int i = 0; i < length; ++i)
{
randomString << alphanum[rand() % sizeof(alphanum) - 1];
}


return randomString.str();
}

我传入 26 作为长度,并返回以下字符串:

s21p7plri418swa279t0nu
u6hf
9for8meeb72hv98n9bc6wqqe3s
qoiovn

为什么返回的字符串的长度不总是正确的?

最佳答案

alphanum 中有一个 NUL 字符。毕竟,它是 C 弦。当您尝试排除它时,- 的优先级低于%

因此 rand() % sizeof(alphanum) - 1(rand() % sizeof(alphanum)) - 1 相同。有时您可能会在数组的第一个元素之前访问。那只是普通的未定义行为。

此外,您不应多次为随机数生成器设置种子。这也可能会扭曲结果。但它当然不像未定义的行为那么严重。

关于c++ - 生成随机字符串并不总是返回正确的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com