Я предполагаю, что input
является std::string
Если вы посмотрите документацию std::string::find
, вы обнаружите, что она возвращает индекс найденного символа; не итератор. Чтобы использовать конструктор итератора, вы должны использовать:
auto str = std::string(input.begin() + input.find(' '), input.end());
Кроме того, вы можете использовать substr
член input
:
auto str = input.substr(input.find(' '));
+1 и -1 в вашем примере сбивают с толку. Если вы добавите 1 к первому, то вы получите подстроку, начинающуюся после найденного символа, а не начиная с символа. Если вы вычли 1 из конца, вы копируете до одного перед последним символом, а не до конца строки.
Обратите внимание, что вам, вероятно, также необходимо обработать случай, когда символ не найден. Конструкторский подход (как я реализовал) будет иметь неопределенное поведение. Подход substr
вызовет исключение.