1

例如:

istringstream ss("hello hi here haha");
string p;
while (iss >> p)
{
    if (p == "hello")
        statement1;
    else if (p == hi)
        statement2;
}

这里使用了解析,那么 b 在 c 中可以使用什么来做到这一点?

4

3 回答 3

3

这是一个示例代码,将您的代码段转换为 C:

#include <stdio.h>
#include <string.h>

int main ()
{
  char s[] ="hello hi here haha";
  char *tok;
  char *last;
  tok = strtok_r(s, " ", &last);
  while (tok != NULL) {
    if(!strcmp(tok, "hello"))
      statement1;
    else if(!strcmp(tok, "hi"))
      statement2;
    tok = strtok_r(NULL, " ", &last);
  }
  return 0;
}

更新我按照 Adam Rosenfield 在评论中的建议更改了strtok对的调用。strtok_r

于 2012-10-05T20:30:38.710 回答
1

如果您正在做一些不平凡的事情,请考虑使用flexand bison

于 2012-10-05T21:36:37.117 回答
0

像这样的东西?

char* ss = "hello hi here hahah";

int i=0;
while (ss[i] != '\0')
{
  while (ss[i] != ' ' && ss[i] != '\0')
    ++i;

  char* p[40];
  memcpy(p,ss,i);

  if (p == "hello")
    statement1;
  else if (p = "hi")
    statement2;
}
于 2012-10-05T20:28:43.403 回答