Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用strstr从字符字符串中的数组中搜索单词_C++ - Fatal编程技术网

C++ 如何使用strstr从字符字符串中的数组中搜索单词

C++ 如何使用strstr从字符字符串中的数组中搜索单词,c++,C++,我的问题是strstr函数、字符串和数组,我想将这个字符串与之进行比较 我的初始代码如下所示: char t[255]; if (strstr(t, "test") || strstr(t, "test2") || strstr(t, "test3")) { // found } "xxxxxxx oooooo xxxxx testxxx test2xxxxxxxx xxxxxxxxxxxx" const

我的问题是strstr函数、字符串和数组,我想将这个字符串与之进行比较

我的初始代码如下所示:

char t[255];
if (strstr(t, "test") || strstr(t, "test2") || strstr(t, "test3"))
{
    // found
}
"xxxxxxx oooooo xxxxx testxxx test2xxxxxxxx xxxxxxxxxxxx"
const char* list[3][1] =
{
    {"test"},
    {"test2"},
    {"test3"},
}
其中t看起来像这样:

char t[255];
if (strstr(t, "test") || strstr(t, "test2") || strstr(t, "test3"))
{
    // found
}
"xxxxxxx oooooo xxxxx testxxx test2xxxxxxxx xxxxxxxxxxxx"
const char* list[3][1] =
{
    {"test"},
    {"test2"},
    {"test3"},
}
这段代码很有效,但我希望将所有搜索内容保存在一个数组中,所以我这样做:

char t[255];
if (strstr(t, "test") || strstr(t, "test2") || strstr(t, "test3"))
{
    // found
}
"xxxxxxx oooooo xxxxx testxxx test2xxxxxxxx xxxxxxxxxxxx"
const char* list[3][1] =
{
    {"test"},
    {"test2"},
    {"test3"},
}
[……]

但是由于某种原因,在这样一个更改之后的代码不起作用,并且没有从数组中找到值,即使它应该这样做,我如何以正确的方式做到这一点

提前感谢您的帮助

sizeoflist/sizeoflist将始终为1,因此您只检查列表中的第一个字符串。但是,仍应找到第一个字符串。您也不需要第二个数组索引-您可以使用

const char *list[3] = { "test", "test1", "test2" };

int main() {
    char t[255] = "xxxxxxx oooooo xxxxx testxxx test2xxxxxxxx xxxxxxxxxxxx";

    for (int i = 0; i < sizeof(list)/sizeof(list[0]); ++i) {
        if (strstr(t, list[i])) {
            printf("found!\n");
            break; } }
}

当你将sizeoflist除以sizeoflist,你认为会发生什么?另外,当字符串包含test2时,您不认为同一个字符串也必须包含test保证,那么为什么要同时搜索这两个字符串呢?这是做什么的?if strstrt,test | | | strstrt,test2 | | strstrt,test3中的第一个测试将匹配包含测试的每个字符串,包括test2。。。因此,最后两个比较是多余的。为什么常量字符*列表[3][1]而不是常量字符*列表[3];?这是一个奇怪的大括号格式。完全可读和浓缩。