假设我有以下函数,并希望将field
作为变量和value
作为值进行比较。我该怎么办?
bool ReadFile::compareField(string field, string value)
{
if (field == "value")
}
答案 0 :(得分:4)
如果您正在谈论C ++,那么答案是:您不能。变量是一个编译时间的东西;它们不会在运行时存在。
如果您想以字符串形式访问参数,那么您可以考虑使用例如std::map
:
class MyClass
{
private:
std::map<std::string, int> params;
public:
MyClass()
{
params["height"] = 165;
params["weight"] = 65;
params["legs"] = 2;
}
int getParam(const std::string &str) const
{
return params[str];
}
};
答案 1 :(得分:0)
我将上面的func更改为没有map到以下func:
bool ReadFile::compareField( string * field, string value){
int i;
string fieldName = *field;
//converting to lower case
for (i = 0; i< strlen(value.c_str());i++)
value[i] = tolower(value[i]);
for (i = 0; i< strlen(fieldName.c_str());i++)
fieldName[i] = tolower(fieldName[i]);
/////
cout << fieldName << endl;
if (strstr(fieldName.c_str(),value.c_str()) != NULL){
return true;
}
return false;
}
首先我转换为小写,然后使用strstr func进行搜索,但这里有一个很好的说明,我使用该变量的地址而不是其名称。