菜鸟问题:试图审查向量中的特定单词
Noob question: Trying to censor specific words in a vector
我是一个菜鸟,正在阅读这本 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!")
你测试这个词是否是不喜欢的,然后你展示它。所以是的,只有西兰花。顺便说一下,你并不完全遵循你的练习所说的,因为当这个词不受欢迎时,你应该哔,如果不喜欢这个词,你应该哔哔这个词。 (根据我的理解(。
希望对您有所帮助。
相关文章:
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 创建单词对齐的字符向量
- 如何用单词排列向量中的每个字符升序?
- 如何使用向量 c++ 迭代文件中单词的位置
- 将字符串拆分为单个单词并将它们放置在向量中
- 如何从C 向量访问单个单词
- 菜鸟问题:试图审查向量中的特定单词
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- 如何在带有给定特定前缀的向量中打印出单词
- C - 将文本文件读为一串单词,然后将字符串分为向量
- 分类包含数字和单词的字符串向量
- 在 C++11 中计算字母和单词的双字母组合的 std::线程向量的问题
- 在向量中通过一个单词查找行
- 使用单词键将多个行号的向量添加到我的地图中
- 计算字符向量中单词的出现次数
- 在向量中搜索C++字符串s中的单词
- 向量中的常用单词用C++表示单词出现的次数
- 计算向量中偶数长度的单词
- 单词比较 - 向量/getopt
- 将字符串拆分为单词向量