我想创建一个函数,该函数将通过使用随机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。
答案 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
,后者跳至循环结束,然后继续。
我认为还有其他问题,但这将使您朝正确的方向开始。