Как получить подстроку после введенного символа C++?

#include <cstring> 
#include <iostream> 
using namespace std; 
  
int main() 
{ 
    // Take any string 
    string s = "abcdefghijk"; 
  
    // Find position of 'd' using find() 
    int pos = s.find("d"); 
  
    // Copy substring after pos 
    string sub = s.substr(pos + 1); 
  
    // prints the result 
    cout << "String is: " << sub; 
  
    return 0; 
}

мне нужно тот же результат но только с выводами (input)

Примеры

INPUT:  abcdefghijk
INPUT:  d
OUTPUT: efghijk

Ответы (2 шт):

Автор решения: Ildar

выводим строку с помощью for_each с начальным итератором смещенным на позицию после необходимой буквы

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
  std::string text;
  std::cin >> text;
  char letter;
  std::cin >> letter;

  auto pos = text.find(letter);
  
  if (pos != text.npos) {
    std::for_each(text.begin() + pos + 1, text.end(),
      [](auto symb) {std::cout << symb;});
  }

  return 0;
}
→ Ссылка
Автор решения: AR Hovsepyan
  • Вводим строку и символ.
  • Находим позицию символа в строке.
  • Если не нашли, то позиция принимает значение std::string::npos.
    Значит, если позиция pos не равен этому значению, то символ найден. Иначе выводим, что не нашли.

И, ввиду заранее выполненного постинкремента(pos++), получаем строку после этого символа, передавая в substr эту позицию позицию(позиция следующего символа после найденного).

string s;
char d;
cin >> s >> d;
size_t pos = s.find(d);
if(pos++ != s.npos)
   cout << "String is: " << s.substr(pos);
else
    cout << "\n!!!!not found\n";
→ Ссылка