Как считать строку

Я в консоль ввожу строку age 22

    string msg;
    cin >> msg;
    if (msg.compare("age") == 0)
    {
        char str[20];
        int i;

        sscanf(msg.c_str(), "%s %d", str, &i);
        printf("%s -> %d\n", str, i);
    }

слово age выводит правильно, а в цифрах мусор, помогите, как это можно реализовать


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

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

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

    int i;
    string msg;
    cin >> msg >> i;
    cout<< msg << " -> " << i;

Или считывать всю строку (до символа '\n') функцией 'getline()', и дальше форматировать как у вас в коде.

int i;
    string msg;
    char str[20];
  
    getline(cin, msg);
    sscanf(msg.c_str(), "%s %d", str, &i);
    printf("%s -> %d\n", str, i);
→ Ссылка