#include <iostream>
#include <string>
void output_ws(std::ostream& _out, const std::string& s){
const char delim[] = " \t\n?!.,";
std::string::const_iterator i, j;
std::string::size_type n, p = 0;
while((p = s.find_first_not_of(delim, p)) != std::string::npos){
if((n = s.find_first_of(delim, p)) == std::string::npos)
n = s.length();
if(p != n){
i = s.begin() + p;
j = s.begin() + n;
while((i != j) && (*i != '-'))
++i;
if((i != j) && (*i == '-')){
for(i = s.begin() + p; i != j; ++i)
_out << *i;
_out << std::endl;
}
}
p = n;
}
}
int main(void){
std::string s = "Написать-функцию, которая-выводит на экран-строку, из слов, "\
"разделенных-символами подчеркивания-вместо-пробелов. Помогите-пожалуйста";
output_ws(std::cout, s);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBvdXRwdXRfd3Moc3RkOjpvc3RyZWFtJiBfb3V0LCBjb25zdCBzdGQ6OnN0cmluZyYgcyl7Cgljb25zdCBjaGFyIGRlbGltW10gPSAiIFx0XG4/IS4sIjsKCXN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBqOwoJc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBuLCBwID0gMDsKCgl3aGlsZSgocCA9IHMuZmluZF9maXJzdF9ub3Rfb2YoZGVsaW0sIHApKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyl7CgoJCWlmKChuID0gcy5maW5kX2ZpcnN0X29mKGRlbGltLCBwKSkgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCgkJCW4gPSBzLmxlbmd0aCgpOwoKCQlpZihwICE9IG4pewoJCQlpID0gcy5iZWdpbigpICsgcDsKCQkJaiA9IHMuYmVnaW4oKSArIG47CgkJCXdoaWxlKChpICE9IGopICYmICgqaSAhPSAnLScpKQoJCQkJKytpOwoJCQkKCQkJaWYoKGkgIT0gaikgJiYgKCppID09ICctJykpewoJCQkJZm9yKGkgPSBzLmJlZ2luKCkgKyBwOyBpICE9IGo7ICsraSkKCQkJCQlfb3V0IDw8ICppOwoJCQkJX291dCA8PCBzdGQ6OmVuZGw7CgkJCX0KCQl9CgkJcCA9IG47Cgl9Cn0KCmludCBtYWluKHZvaWQpewoJc3RkOjpzdHJpbmcgcyA9ICLQndCw0L/QuNGB0LDRgtGMLdGE0YPQvdC60YbQuNGOLCDQutC+0YLQvtGA0LDRjy3QstGL0LLQvtC00LjRgiDQvdCwINGN0LrRgNCw0L0t0YHRgtGA0L7QutGDLCDQuNC3INGB0LvQvtCyLCAiXAoJICAgICAgICAgICAgICAgICLRgNCw0LfQtNC10LvQtdC90L3Ri9GFLdGB0LjQvNCy0L7Qu9Cw0LzQuCDQv9C+0LTRh9C10YDQutC40LLQsNC90LjRjy3QstC80LXRgdGC0L4t0L/RgNC+0LHQtdC70L7Qsi4g0J/QvtC80L7Qs9C40YLQtS3Qv9C+0LbQsNC70YPQudGB0YLQsCI7CglvdXRwdXRfd3Moc3RkOjpjb3V0LCBzKTsKCXJldHVybiAwOwp9