Как получить подстроку после введенного символа 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";