如何创建一个检查每次迭代并在每次迭代之后从头开始的循环

时间:2019-10-18 21:57:18

标签: c++ loops

我想创建一个函数,该函数将通过使用随机num gen选择1或2,然后在字符串中的单词之间随机插入一个空格,然后继续插入或跳至下一个单词的结尾。我希望仅当字符串的长度小于我使用变量myLength设置的预定义限制时才发生这种情况。我的主要问题是,设计不良的循环填充了第一个单词和第二个单词之间的空间,而没有检查其他单词。

我的主要问题是,设计不良的循环填充了第一个单词和第二个单词之间的空间,而没有检查其他单词。

    void NumLoop(string& s) {

int pos = s.find_first_of(' ');

while (s.length() < myLength) {

    for (int pos; pos != string::npos; pos = s.find(' ', pos + 1)) {

        int choice = rand() % 2;

        if (choice = 1) {
            s.insert(pos + 1, " ");

                break;

        }
        if (choice = 0) {

            break;
        }
    }
}
cout << s;
system("pause");

}

我希望程序随机选择单词之间的空格,然后增加字符串大小,直到达到所需的s.length。

1 个答案:

答案 0 :(得分:0)

首先,这个pos

int pos = s.find_first_of(' ');

在您的pos循环范围内被该for隐藏:

for (int pos; pos != string::npos; pos = s.find(' ', pos + 1)) {

因此摆脱第一个,并在此循环中将两者结合起来:

for (int pos = s.find_first_of(' '); pos != string::npos; pos = s.find(' ', pos + 1)) {

接下来,将您的break(从for循环中退出,结束)更改为continue,后者跳至循环结束,然后继续。

我认为还有其他问题,但这将使您朝正确的方向开始。