为什么程序不能在字符串中手动追加'#'(hashtags)?

时间:2018-05-08 08:02:09

标签: c++ string find

当我运行此程序时:

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
    if (argc != 2)
    {
        cerr << "[ERR] usage: " << argv[0] << " expression" << endl;
        return 1;
    }

    string pExpression = argv[1];

    size_t stringLength = pExpression.length();

    if (pExpression[stringLength - 1] != '#') //If there is no hashtag at the end, append one
        pExpression += '#';

    cout << "Search for '#' in '" << pExpression << "'..." << endl;

    bool found = false;

    for (size_t i = 0;i < stringLength;i++)
    {
        if (pExpression[i] == '#')
            found = true;
    }

    cout << ((found) ? "String contains '#'" : "String doesn't contain '#'") << endl;
    return 0;
}

我试着检查一下,如果最后有一个标签。如果没有,我追加一个。

但是,如果我检查它,我的程序“找不到”它。

这是我的意思的一个例子:

image

1 个答案:

答案 0 :(得分:4)

因为在添加stringLength后您不会增加#。所以for循环就在它前面停止。