2014-02-19 3 views
0

Я хочу создать метод, который возвращает токен и увеличивает его.Простой способ вернуть содержимое итератора и увеличить его

Я сделал это:

_tokens является станд :: istream_iterator

std::string    getToken() 
{ 
    std::string   result; 

    result = *_tokens; 
    ++_tokens; 
    return result; 
} 

Как вы можете видеть, что это своего рода некрасиво, потому что я возвращаю копию копии.

Но я не могу вернуть ссылку на результат. Результат результата - это локальная переменная.

И я не могу получить ссылку на * _tokens cause ++ _ токены изменят содержимое.

У вас есть представление, как я мог бы сделать это лучше?

+0

Ну, вы можете использовать параметр в ссылке, если вы не можете иметь перемещение семантики. В противном случае вы сможете сделать что-то вроде 'return * _tokens ++; 'и надеяться на RVO. – Xarn

ответ

3

Я думаю, что вы имеете в виду следующего

std::string    getToken() 
{ 
    return *_tokens++; 
} 
Смежные вопросы