如何修复没有匹配函数调用strstr

时间:2016-04-09 15:21:10

标签: c++

所以我一直收到此错误,没有匹配函数来调用'strstr(str::string&, const char [2])'

通过添加.str().c_str();

,我已经看到了一些解决方法

但这对我来说似乎非常讨厌。在给定的场景中是否有更标准的方法:

 string resistance = stockIterator->getValue()->getOther();
                 if(strstr(resistance, "R")){
                    printf("Small resistance");
                    float first = atoi(strtok(resistance, "R"));
                    float second = atoi(strtok(NULL, " \n"));
                    second = second/10;
                    float num = (first+second)/1000000;
                    num = num * stockIterator->getValue()->getStockCount();
                    printf(" %.7f\n\n", num);
                    count = count + num;

3 个答案:

答案 0 :(得分:1)

不是" hacky" - std::string::c_str()为您提供C ++字符串的C字符串表示形式,如果您正在混合C ++字符串和C库函数(例如{{1}),那么这是您的唯一选项})。

我最好的建议是停止在C ++中使用C库函数。您应该使用strstrstd::string::find中找到角色'R'

答案 1 :(得分:1)

使用std::string::find
strstr用于C字符串

答案 2 :(得分:1)

你真的应该使用std::string find()成员函数。要获取子字符串,您可以使用std::string的{​​{1}}成员函数,对于浮点转换,您可以使用substr()。以下是您将如何做到这一点:

std::stof()