首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将攻击性句子列入黑名单

将攻击性句子列入黑名单
EN

Stack Overflow用户
提问于 2016-03-08 08:14:35
回答 4查看 82关注 0票数 1

我已经为年轻观众创建了一个游戏,并试图过滤掉亵渎和冒犯性的名字

代码语言:javascript
复制
#include <iostream>
#include <vector>

bool isBanned( std::string text ) {
    std::vector bannedSent = {
        "Profanity1",
        "Profanity2",
        "Profanity3",
        "Profanity4"
    };
    for(auto &i : bannedSent) {
        if(text == i) { return true; }
    }
    return false;
}

std::vector行上,我得到了一个关于“模板参数”的编译器错误,这是什么意思?

EN

回答 4

Stack Overflow用户

发布于 2016-03-08 08:20:47

你需要为你的向量提供模板参数。由于您持有字符串,因此需要像这样声明它:

代码语言:javascript
复制
std::vector< std::string > bannedSent = {
   "Gosh",
   "Golly",
   "Jeepers",
   "Troll"
};
票数 7
EN

Stack Overflow用户

发布于 2016-03-08 21:37:11

实际上,最简单的解决方案是不指定类型。编译器已经有了一个不错的想法,并且您已经知道了关键字:

代码语言:javascript
复制
auto bannedSent = {
    "Profanity1",
    "Profanity2",
    "Profanity3",
    "Profanity4"
};
for(auto i : bannedSent) { ...

副作用:这避免了在每次调用中构造4个std::string对象。

请注意,您在前面使用了auto& i。这是一个错误,您并不打算更改bannedSent

票数 3
EN

Stack Overflow用户

发布于 2016-03-08 08:19:19

If应为std::vector<std::string>

代码语言:javascript
复制
bool isBanned( std::string text ) {
    std::vector<std::string> bannedSent = {
    ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35856659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档