gpt4 book ai didi

c++ - 为什么我的 while 循环永远不会结束,即使生成的整数未能满足运行条件

转载 作者:行者123 更新时间:2023-12-04 07:14:22 25 4
gpt4 key购买 nike

我正在尝试做一个简单的 while 循环,该循环在字符串中搜索特定字符,然后在结束循环之前返回该字符出现在字符串中的每个位置
这是我的代码的一个版本,我一直在尝试捕捉数字不再为 0 或小于字符串长度的点,因为如果没有 if 我无法让 while 循环结束语句,我尝试添加它以强制 'num' 超出这些范围,看看 while 循环条件是否会捕获它并结束循环,似乎不会。


#include <iostream>
using namespace std;

int main() {
string phrase = "Hello I am a pineapple";

int phraseLength = int(phrase.length());
int num = 0;


while(num < phrase.length() -1 && num > -1)
{
num = int(phrase.find('a', num));
cout << num << endl;
num++;
if(num < phraseLength -1 || num ==0){
cout << num << endl;
}else{
num = 24;
}

}
我更习惯于python,目前正在尝试学习c++,我知道如果我要在python中使用这些条件,循环就会结束,那么为什么不在这里呢?
示例输出:
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0
8
9
11
12
17
18
-1
0

最佳答案

问题是(如@kalyanswaroop 所说)当 find() 找不到返回 -1 的字符时,循环中的下一步将分配的值从 -1 更改为 0,因此它满足循环的条件。为了防止这种情况发生,我将代码更改为以下内容,以便如果 num 为 -1,则它会中断循环。

#include <iostream>
using namespace std;

int main() {
string phrase = "Hello I am a pineapple";

int phraseLength = int(phrase.length() - 1);
int num = 0;


while(num >= 0)
{

num = int(phrase.find(char('a'), num));
if(num > -1)
{
cout << num << endl;
num++;
}
else{
break;
}

}

return 0;

}

关于c++ - 为什么我的 while 循环永远不会结束,即使生成的整数未能满足运行条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68878437/

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