2017-07-25 206 views
-7

检查截图,我真的不知道它有什么问题C++奇怪的错误strstr

任何人都可以帮助我吗?

 if (strstr(pMaterial->GetTextureGroupName(), "World textures")) 
     { 
      pMaterial->ColorModulate(0.5, 0.5, 0.5); 
     } 

screenshot

1:C2665 '的strstr':没有2个重载可以转换所有的参数类型

2:E0304没有重载函数 “的strstr” 的实例参数列表匹配

+3

什么错误的屏幕截图是,它是一个屏幕截图。请在问题中包含代码和错误(不包括图片,请勿链接图片) – user463035818

+0

好的,对不起。 – PlayaVole

+3

错误告诉你到底发生了什么问题。你正在传递'std :: string,const char [15]',并且没有接受这些参数的'strstr'的​​重载版本。 –

回答

1

GetTextureGroupName()功能是std::string类型。 std::strstr()函数不接受std::string作为参数。使用String c_str()成员函数:

if (std::strstr(pMaterial->GetTextureGroupName().c_str(), "World textures")){ 
    pMaterial->ColorModulate(0.5, 0.5, 0.5); 
} 

而不是回落到C风格的字符串,你应该探索在评论中指出的std::string设施。修改后的示例使用std::string::find成员函数:

if (pMaterial->GetTextureGroupName().find("World textures")!= std::string::npos){ 
    pMaterial->ColorModulate(0.5, 0.5, 0.5); 
} 
+2

为什么降级到C字符串而不是使用'std :: string'提供的? –

-1

strstr接受两个char *指针。你可以将其更改为:

strstr(pMaterial->GetTextureGroupName().c_str(), "World textures") 
+1

我认为有一个错字:c_ptr - > c_str –