Как передать строковую переменную-итератор в функцию в c ++? - PullRequest
1 голос
/ 13 февраля 2020

Следующий код просто печатает строку, полученную из основной функции, используя другую функцию, называемую recurse. Я просто хотел узнать, как передать строковую переменную-итератор другой функции. Но код, который я написал, не печатает никакого результата. Может кто-нибудь сказать мне, что является ошибкой и что я могу сделать, чтобы код работал?

#include <iostream>
#include <string>
using namespace std;

void recurse(string::iterator &start, string::iterator &end)
{
    while(start != end)
    {
        cout << *start;
        ++start;
    }
}

int main()
{
    string s;
    string::iterator i = s.begin(), j = s.end();

    cout << "Enter the string here: ";
    getline(cin, s);

    recurse(i, j);

}

1 Ответ

0 голосов
/ 13 февраля 2020

Во время инициализации i and j указывает на неверный адрес (так как s пусто). Но когда вы взяли ввод, он получает новую строку, и i and j указывают на старый адрес ( неверный ).

Так что объявляйте итерацию после получения ввода.

string s;

cout << "Enter the string here: ";
getline(cin, s);
string::iterator i = s.begin(), j = s.end();

recurse(i, j);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...