C++ 如何使用strstr从字符字符串中的数组中搜索单词
我的问题是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
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];?这是一个奇怪的大括号格式。完全可读和浓缩。