如何在字符串c ++编程中找到子字符串的所有位置

时间:2015-06-15 20:45:27

标签: c++ string-parsing

我有字符串(c ++编程)代表按键事件:X,Y,DEL 如果收到事件X,我必须打印“X”if-and-only - 但是在两个事件之前没有Y事件先于或者成功。

例如:

  1. “DEL DEL X DEL DEL Y”=>输出“X”

  2. “DEL DEL X DEL Y DEL”=>没有输出

  3. “Y DEL X DEL DEL DEL”=>没有输出

  4. “X X X X X X”=>输出“XXXXXX”

  5. 我应该怎么做? 我难以解析和搜索字符串 谢谢

1 个答案:

答案 0 :(得分:0)

一个简单的解析器:

#include<sstream> 
void parse(std::string input, std::vector<std::string> &keys)
{
    std::stringstream stream(input); // put input string into a stream for easy parsing 
    std::string key;
    while (stream >> key) // reads from the stream up to the first whitespace 
                          // or end of string
    {
        keys.push_back(key);
    }
}

样本用法:

int main (int argc, char ** argsv)
{
    std::vector<std::string> keys; // allocate a container for the keys in the input
    // get input from unspecified source
    parse(input, keys); // call above function to fill the keys container with input 
    // operate on keys
}

operate on keys是困难的部分:使用键列表,您需要确定要输出的内容。回过头来看一些代码,我们可以帮你解决。