2013-11-21 3 views
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(); 
     } 
    } 
} 

ответ

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); 
} 

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

+1

+1 для использования stringstream – smac89

Смежные вопросы