例えば:
istringstream ss("hello hi here haha");
string p;
while (iss >> p)
{
if (p == "hello")
statement1;
else if (p == hi)
statement2;
}
ここでは解析が使用されているため、これを行うために 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;
}
更新コメントでAdamRosenfieldが推奨するよう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;
}