我正在创建一个小游戏,用户将有提示(字符串的字符)来猜测字符串的单词。我有代码来查看字符串的每个字符,但是我可以看到随机打印的那些字符吗?
string str("TEST");
for (int i = 0; i < str.size(); i++){
cout <<" "<< str[i];
输出:T E S T. 期望的样本输出:E T S T
答案 0 :(得分:2)
在字符串上使用random_shuffle:
random_shuffle(str.begin(), str.end());
<强>编辑强>: C ++ 11以后使用:
auto engine = std::default_random_engine{};
shuffle ( begin(str), end(str), engine );
答案 1 :(得分:0)
使用以下代码随机生成字母。
const int stl = str.size();
int stl2 = stl;
while (stl2 >= 0)
{
int r = rand() % stl;
if (str[r] != '0')
{
cout<<" "<<str[r];
str[r] = '0';
stl2--;
}
}
此代码基本上根据String的大小生成随机数,然后打印放置在字符串特定位置的字符。 为了避免重新打印已打印的字符,我已将打印的字符转换为“0”,因此下次生成相同的位置编号时,将检查字符是否为“0”。
如果您需要保留原始字符串,则可以将该字符串复制到另一个变量并在代码中使用它。
注意:假设字符串仅包含字母字符,因此为了防止重复,使用“0”。如果您的字符串可能包含数字,则可以使用其他字符进行比较