菜鸟问题:试图审查向量中的特定单词

Noob question: Trying to censor specific words in a vector

本文关键字:单词 向量 审查 问题 菜鸟      更新时间:2023-10-16

我是一个菜鸟,正在阅读这本 c++ 书的第 4 章,我无法正确回答这个作业。

下面包含对我有意义但不起作用的代码。

这是作业:

编写一个程序,"哔哔"出你不喜欢的单词;也就是说,你使用cin阅读单词,然后在cout上再次打印它们。如果一个词是你定义的几个词之一,你写出BLEEP而不是那个词。从一个"不喜欢的词"开始,例如不喜欢的字符串="西兰花";当它有效时,再添加一些。

帮助将不胜感激,我什至可能会给您邮寄一些饼干。

int main() {
vector<string> words;
for (string temp; cin >> temp; )
    words.push_back(temp);
string disliked = "broccoli";
for (int i = 0; i < words.size(); ++i)
    if (words[i] == disliked ||  disliked=="Bleep!")
        cout << words[i] << "n";

即使我输入了几个单词,我讽刺地得到的只是"西兰花",没有别的。

它只打印出"西兰花"的原因是因为这里的这些行:

    if (words[i] == disliked ||  disliked=="Bleep!")
        cout << words[i] << "n";

这些行基本上意味着"如果这个词等于西兰花,就打印出这个词"。检查的第二部分,disliked == "Bleep!",总是假的(因为disliked总是"西兰花"(,所以它不起作用。

我们可以解决这样的事情:

include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    vector<string> words;
    for (string temp; cin >> temp;)
        words.push_back(temp);
    string disliked = "broccoli";
    for (int i = 0; i < words.size(); ++i)
        if (words[i] == disliked)
            cout << "Bleep!" << 'n';
        else 
            cout << words[i] << 'n'; 
}

这里的逻辑是"如果不喜欢这个词,就打印出"哔哔",否则,打印出这个词。

如果您还有其他问题,我很乐意回答,任何饼干都绝对不胜感激! :)

贾斯汀说的是真的。调试器可以通过逐行跟踪发生的事情来准确显示发生了什么(您的程序不足以做到这一点(。

但是我会回答。这里的问题来自生产线

if (words[i] == disliked ||  disliked=="Bleep!")

你测试这个词是否是不喜欢的,然后你展示它。所以是的,只有西兰花。顺便说一下,你并不完全遵循你的练习所说的,因为当这个词不受欢迎时,你应该哔,如果不喜欢这个词,你应该哔哔这个词。 (根据我的理解(。

希望对您有所帮助。