例如:
istringstream ss("hello hi here haha");
string p;
while (iss >> p)
{
if (p == "hello")
statement1;
else if (p == hi)
statement2;
}
这里使用了解析,那么 b 在 c 中可以使用什么来做到这一点?
这是一个示例代码,将您的代码段转换为 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
如果您正在做一些不平凡的事情,请考虑使用flexand bison。
像这样的东西?
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;
}