проверить, есть ли в указателе какая-то строка c ++ - PullRequest
1 голос
/ 02 сентября 2011

Я плохо разбираюсь в 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 ]

4 голосов
/ 02 сентября 2011

Эквивалент 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 путем измерения искомой строки.

2 голосов
/ 02 сентября 2011

Проверьте std :: string :: find , достаточно хороших примеров.Если вы используете строку в стиле c, используйте strstr .

1 голос
/ 02 сентября 2011

Вы можете использовать файл заголовка алгоритма , чтобы делать большинство вещей, как правило, один вкладыш в python.

В этом случае может быть проще использовать string find метод.

1 голос
/ 02 сентября 2011

Если ваша name переменная имеет тип std::string, вы можете использовать name().compare("Pre") == 0 для сравнения строк.

РЕДАКТИРОВАТЬ: Кажется, я неправильно понял вопрос, поскольку содержит, вы можете использовать строку найти, как другие сказали.

При использовании строк в стиле C char * не рекомендуется в C ++. Они подвержены ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...