Как удалить подстроку из строки методом erase? c++

Для заполнения стека нужно ввести "push какое-то число"". Я записываю это в строку, затем пытаюсь удалить из нее подстроку начиная с 0-ого символа по 4-ый символ, чтобы строка содержала только число, которое я позже преобразую к int и благополучно запихаю в стек. Что я делаю не так? Пробовал также str = str.erase (0,3)

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    string str = "";
    cin >> str;
    str.erase(0, 4);
    cout << str;

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

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

Почему не работает код. да все просто - cin >> str; вводит до первого пробела, потому что str - строка. Вот и все. Меняем немного

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    string str;
    int n;
    cin >> str >> n;
    cout << "строка " << str << " число " << n;

}

и все работает. Если же хочется всю строку, что бы сохранить оригинальную идею - std::getline.

std::string str;
std::getline(std::cin, str);
str.erase(0, 5);
cout << str;
→ Ссылка