首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略空格之前字符串的所有部分

忽略空格之前字符串的所有部分
EN

Stack Overflow用户
提问于 2016-12-17 04:53:11
回答 1查看 79关注 0票数 0

我正在用C++编写一个小型聊天机器人程序

现在,我有一种功能,让机器人可以编写用户对文件brain.txt说的任何内容,并在文件旁边放置一个数字,以便于记忆。继续,输入用户输入Grapefruit将把葡萄柚放在新的行上,6作为前缀。

代码语言:javascript
复制
0 suspect
1 interest
2 underwood
3 interior
4 bullet
5 dog

我遇到了一个问题,我需要将用户输入与机器人之前的用户输入的内存进行比较。

代码语言:javascript
复制
ifstream brain ("projects/AI/brain.txt");
if (brain.is_open())
{
    while ( getline(brain,memory))
    {
        cout << "memory: " << memory << endl; 
        cout << "userinput: " << userinput << endl; 
        if (memory == userinput)
            {
                exists = true;
                //if it exists, tell the user, and break
                cout << "I know that already!" << endl;
                break;
            }
        else { filepos++; }

如果用户输入是grapefruit,那么机器人的内存是6 grapefruit ergo,如果它比较这两者,比较检查就会失败,因为它们不是相同的字符串。

我希望数字仍然是字符串的一部分,并且我能够有选择地选择要读取的字符串的一部分。稍后我可能会升级到JSON或类似的东西,但是现在,我想这样做。

  • 我的第一个问题是,在空格之后,我如何才能忽略所有的字符串?所以我的程序将正确地比较grapefruitgrapefruit而不是6 grapefruit
  • 我的第二个问题是,我是否可以扩展这个功能,这样我就可以跳过多个空格,只在多个空格经过之后才能读取?

例如,在字符串:6葡萄柚23 53 12,我想访问数字53,没有其他。

改进的方法和我可能做错了的方法?

我本可以在程序启动时在运行时将其提升为元组或什么的向量,从而阻止我从文件中访问。这是我将来可能会做的事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-17 05:31:24

如果您的字符串存储在std:string对象中,则可以使用find方法()来确定内存字符串包含在输入字符串中。

string/find

代码语言:javascript
复制
if (memory.find(userinput) != std::string::npos)
{
                exists = true;
                //if it exists, tell the user, and break
                cout << "I know that already!" << endl;
                break;
}

string : no被定义为一个特殊字符,在本例中表示在字符串结束之前没有找到匹配的字符。

string/npos

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41195490

复制
相关文章

相似问题

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