1

例えば:

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

ここでは解析が使用されているため、これを行うために 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;
}

更新コメントでAdamRosenfieldが推奨するよう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 に答える