所以我一直收到此错误,没有匹配函数来调用'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;
答案 0 :(得分:1)
不是" hacky" - std::string::c_str()
为您提供C ++字符串的C字符串表示形式,如果您正在混合C ++字符串和C库函数(例如{{1}),那么这是您的唯一选项})。
我最好的建议是停止在C ++中使用C库函数。您应该使用strstr
在std::string::find
中找到角色'R'
。
答案 1 :(得分:1)
使用std::string::find
strstr
用于C字符串
答案 2 :(得分:1)
你真的应该使用std::string
find()
成员函数。要获取子字符串,您可以使用std::string
的{{1}}成员函数,对于浮点转换,您可以使用substr()
。以下是您将如何做到这一点:
std::stof()