Вывести каждое слово в строке на новую строку

0

Я разрабатываю функцию, которая имеет 1 входной параметр: string. Функция принимает содержимое этой строки и выводит каждое слово на новую строку. В настоящее время эта функция выполняет все, кроме вывода последнего слова в строке. Здесь код функции:

void outputPhrase(string newPhrase)
{
    string ok;
    for (int i = 0; i < newPhrase.length(); i++)
    {
        ok += newPhrase[i];
        if (isspace(newPhrase.at(i)))
        {
            cout << ok << endl;
            ok.clear();
        }
    }
}
Теги:
string

2 ответа

1
Лучший ответ

Попробуй это:

 for (int i = 0; i < newPhrase.length(); i++)
    {
        ok += newPhrase[i];

        if (isspace(newPhrase.at(i)) || i==newPhrase.length()-1)
        {
            cout << ok << endl;

            ok.clear();

        }


    }
  • 0
    Моя версия проверяет, есть ли isspace или for достиг конца строки
1

Вы можете использовать эту функцию для выполнения своей задачи,

void split(string newPhrase)
{
    istringstream iss(newPhrase);

    do
    {
        string sub;
        iss >> sub;
        cout << sub << endl;
    } while (iss);
}

Не забудьте включить <code> и <sstream> в свой код.

  • 1
    +1 за использование stringstream

Ещё вопросы

Сообщество Overcoder
Наверх
Меню