Найти подстроку в строке возвращает -1, хотя подстрока доступна - PullRequest
0 голосов
/ 11 января 2011

У меня снова странная вещь на C ++:

l - строка ввода (string.c_str ()) > становится строкой
pos - позиция, с которой начинается поиск
s - строка (string.c_str ()) для поиска > становится командой

Все работает нормально, пока команда не станет "-1". В этом случае строка «-1» не найдена, хотя строка содержит ее. Я что-то упускаю из виду?

Код:

bool Converter::commandAvailable(const char* l, int pos, const char* s) {

string line = l;
string command = s;
int x = line.find(command, pos);
if (x != -1) {
  return true;
}
return false;
}

Заранее спасибо!

1 Ответ

2 голосов
/ 11 января 2011

Это должно помочь вам найти проблему:

bool Converter::commandAvailable(const char* l, int pos, const char* s) 
{
    string line = l;
    string command = s;
    std::cout << "INPUT" << std::endl;
    std::cout << "LINE:  " << line << std::endl;
    std::cout << "CMD:   " << command << std::endl;
    std::cout << "START:  " << pos << std::endl << std::endl;

    std::size_t x = line.find(command, pos);

    std::cout << "OUTPUT:  " << x << std::endl;
    if (x != std::string::npos) 
    {
        return true;
    }
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...