Использование C ++ strstr для поиска строки ac, а затем подсчета

0

Я использую strstr для отображения имени класса в c++. Проблема с моим кодом заключается в том, что он ищет эту строку:

"class "

во всем входном файле. Результат выглядит так:

The CLASS name is class locCounter 
The CLASS name is class ";

Вторая строка не должна быть там, она в основном отображает строку 7 из приведенного ниже кода, чего она не должна.

int locCounter::classCounter()
{
    int count = 0;
    ifstream theOtherFile ("loc2.cpp");
    while (! theOtherFile.eof())
    {
        const char *one = "class ";
        getline(theOtherFile, otherFileData);
        const char *result = otherFileData.c_str();
        while ((result = strstr(result, one)) != NULL)
        {
            cout << "The CLASS name is " << result << endl;
            result++;
        }
    }
}

Кроме этого, мне интересно, как я могу заставить функцию также начать подсчет количества строк с момента, когда она найдет слово "класс", пока не попадет в последнюю фигурную скобку в классе.

Благодарю.

Теги:

2 ответа

0

+ Изменить

while ((result = strstr(result, one)) != NULL)

в

if ((result = strstr(result, one)) != NULL)

Цикл while ищет все вхождения "class " в вашем файле, а оператор if ищет только первое вхождение.

  • 0
    Это на самом деле не работает в этом случае.
  • 0
    Затем вы можете выйти из цикла, как только встретите первое вхождение.
0

Возможно, вам стоит попробовать механизм регулярных выражений, например, Boost Regex

Затем вы можете использовать регулярные выражения, как в этом вопросе, чтобы передать их движку.

Попробуйте. Это очень просто.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню