#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main(){
string previous;
string current;

vector<string> dislikes(4);
dislikes [0] = "cat1";
dislikes [1] = "cat2";
dislikes [2] = "cat3";
dislikes [3] = "cat4";

while(cin >> current){

for(int i = 0; i<dislikes.size(); ++i){
    if(current==dislikes[i]){
    cout << "BLEEP ";}

    else if(i=4);
    {cout << current << " ";}
    };


    previous = current;
};
return 0;
};

仅当出现在句子中时,它才会用bleep替换cat1,而不会出现其他任何一个。我不知道为什么,而且已经盯着它看了好多年了。

最佳答案

else if(i=4);

应该
else if(i==3)

因此,这条线上存在三个问题:
  • 使用=代替===设置某物的值,因此i将设置为4,这将结束循环。使用==比较值。
  • 您要比较的值为3,而不是4,因为 vector 只有4个长,并且循环索引将仅达到4 - 1
  • ;之后的elseelse的主体,因此else实际上将不执行任何操作。
  • 10-07 13:38