Почему программа не может найти добавленный вручную '#' (хэштеги) в строке? - PullRequest
0 голосов
/ 08 мая 2018

Когда я запускаю эту программу:

#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 голосов
/ 08 мая 2018

Потому что вы не увеличиваете stringLength после добавления #. Поэтому цикл for останавливается прямо перед ним.

...