将字符串中以“#”开头的单词提取到字符串流中 - C++

问题描述

我正在尝试编写一个程序,该程序将从字符串中返回以符号 # 开头的单词。 例如: 诸如“I like #tacos and #pizza”之类的字符串将返回:#tacos #pizza

这是我当前的代码

int main(void){
    string myString = "I like #tacos and #pizza";
    std::istringstream iss(myString);
    while(iss >> myString){
        int i = 0;
        if(myString[i] == '#'){
            iss >> myString;
        }
        i++;
    }
    std::cout << myString;
}

然而,这只会返回一个主题标签开头的词。关于我可以在代码中更改的内容有什么帮助吗?

解决方法

您只需要使用 frontmyString[0] 检查字符串的第一个字符,并在循环中打印输出。您的原始代码最多只打印一次,因此我将打印语句移到循环中。

#include <iostream>
#include <sstream>
#include <string>

int main(void) {
  std::string myString = "I like #tacos and #pizza";
  std::istringstream iss(myString);
  while (iss >> myString) {
    if (myString.front() == '#') {
      std::cout << myString << std::endl;
    }
  }
  return 0;
}

Demo