检查指针是否有一些字符串c ++

时间:2011-09-02 11:09:03

标签: c++ pointers

我对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;
         }
    }
 } 

4 个答案:

答案 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方法可能更容易。