我对c ++并不擅长,我无法在任何地方找到它,如果这是一个糟糕的问题,请向我道歉。我有一个指针,我想知道这个指针中的某些名称是否以某个特定的字符串开头。就像在python中一样(也许这是一个不好的例子):
if 'Pre' in pointer_name:
这就是我所拥有的:
double t = 0;
for (size_t i =0; i < modules_.size(); ++i){
if(module_[i].name() == "pre"){ // here is what I want to introduce the condition
if (modules_[i].status() == 2){
std::cout << module_[i].name() << "exists" << std::endl;
}
}
}
答案 0 :(得分:4)
Python 'Pre' in string_name
的等价物是:
string_name.find("Pre") != std::string::npos // if using string
std::strstr(pointer_name, "Pre") // if using char*
Python string_name.startswith('Pre')
(“以某些特定字符串开头”)的等价物是:
string_name.size() >= 3 && std::equal(string_name.begin(), string_name.begin() + 3, "Pre"); // if using string
string_name.find("Pre") == 0 // less efficient when it misses, but shorter
std::strncmp(pointer_name, "Pre", 3) == 0 // if using char*
在其中两种情况下,实际上,您可能希望通过测量您要搜索的字符串来避免使用文字3
。
答案 1 :(得分:2)
检查std::string::find,有足够好的例子。如果您使用的是C风格的字符串,请使用strstr。
答案 2 :(得分:1)
如果您的name
变量的类型为std::string
,那么您可以使用name().compare("Pre") == 0
进行字符串比较。
编辑:似乎我误解了这个问题,对于包含你可以使用字符串查找,正如其他人所说。
使用C样式字符串时,不建议在C ++中使用char *
。它们容易出错。
答案 3 :(得分:1)
您可以使用algorithm头文件来处理python中的大多数内容。
在这种情况下,虽然使用string find方法可能更容易。