随机打印每个字符

时间:2016-11-14 07:37:15

标签: c++ string algorithm random char

我正在创建一个小游戏,用户将有提示(字符串的字符)来猜测字符串的单词。我有代码来查看字符串的每个字符,但是我可以看到随机打印的那些字符吗?

string str("TEST");
for (int i = 0; i < str.size(); i++){
cout <<" "<< str[i];

输出:T E S T. 期望的样本输出:E T S T

2 个答案:

答案 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”。如果您的字符串可能包含数字,则可以使用其他字符进行比较