iss является потоком istringstream, а потоки istringstream являются потоками istring.
Как istream, iss имеет operator>>
, который считывает строки из своего строкового буфера разделенным пробелом способом. То есть, он читает по одному токену, разделенному пробелами, за раз.
Итак, учитывая строку «Это слово», первое, что он прочитал бы - «Это». Следующее, что он будет читать, будет «есть», затем «а», затем «слово». Тогда это потерпит неудачу. Если он терпит неудачу, это переводит iss в состояние, такое, что, если вы проверяете его как bool, он оценивается как false.
Так что цикл while будет читать по одному слову за раз. Если чтение выполнено успешно, то тело цикла добавляет слово в начало outstr. Если это не удается, цикл заканчивается.