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++;
        }
    }
}

除此之外,我想知道如何让该函数也开始计算从找到单词“class”到它碰到类中的最后一个花括号的行数。

谢谢。

4

2 回答 2

0

改变

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

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

while 循环查找"class "文件中所有出现的 ,而 if 语句只查找第一次出现的。

于 2013-10-14T23:03:44.803 回答
0

也许你应该尝试一个正则表达式引擎,比如Boost Regex

然后你可以使用这个问题中的正则表达式将它们提供给引擎。

试试看。这真的很简单。

于 2013-10-14T23:08:46.013 回答