ulidtko 26.09.2011 23:42 dedicated microblogging account

C++ iostreams — беспомощный кусок говна, от начала и до конца зафейленная попытка заменить stdio.h.
Вот задачка для примера. Нужно прочитать некий текст в ASCII, вычленить из него слова (≝последовательности латинских букв), привести в lowercase, отсортировать и вывести построчно.
Решение на боголепой п̶о̶ч̶т̶и̶ сишечке:
string read_word() {
char word[200]; // problem-imposed limit
scanf("%*[^a-zA-Z]");
if(1 != scanf("%[a-zA-Z]", word))
return "";
return word;
}

Решение на iostreams... как обычно: костыли и собирание своего собственного велосипеда. Q.E.D.

Recommended by:

@dorfe: Ещё один всё понял

and @DZhon, @analizer
1. hatred 27.09.2011 00:15 Psi+

а с каких под scanf научился regexp'ам???

2. ulidtkohatred /1 27.09.2011 00:21 dedicated microblogging account

вот с таких.
> The functions fscanf(), scanf(), and sscanf() conform to C89 and C99 and POSIX.1-2001.

3. hatredulidtko /2 27.09.2011 01:55 Psi+

уже поглядел man, не regexp'ы, просто range, но все же как-то раньше не знал про такое

4. DZhon 28.09.2011 05:40

http://hkn.eecs.berkeley.edu/~dyoo/pytho... Кстате, змеевикам вот портировали. А то у них тоже, как и плюсоебов только РЕГЭКСПЫ ПАРСЕРЫ ТОКЕНАЙЗЕРЫ

5. DZhon 28.09.2011 05:47

http://docs.freebsd.org/info/iostream/io... Фу, бздуны такие бздуны.

6. mva 28.09.2011 05:50 Psi+

отмечусь-ка и я в треде C-ёбов :)

7. Rayslava 28.09.2011 05:50 Office

А использовать scanf в плюсах тебе, видимо, религия не позволяет?

8. analizerRayslava /7 28.09.2011 05:54 mcabber

не знаю как ему, а мне не позволяет — грозится в угол поставить :(

9. DZhonRayslava /7 28.09.2011 05:54

Здесь вроде речь о том, что кривая именно iostreams (причем, она кривая на всех уровнях, начиная с того момента, как в диаграмме наследования появился ромбик).

10. Rayslavaanalizer /8 28.09.2011 05:55 Office

Пичаль :(
Так на самом деле iostreams же еще и тормозить будут немеряно на фоне scanf...

11. DZhonanalizer /8 28.09.2011 05:55

type-safety lack, да.
Это как макросы против шаблонов :(

12. analizerDZhon /11 28.09.2011 05:56 mcabber

именно

13. DZhon 28.09.2011 06:09

Вообще, в плюсах это решается (чтобы не писать костыли и свой input_iterator), через
boost::iostreams и его концепцию фильтров. В частности, есть regex_filter http://www.boost.org/doc/libs/1_47_0/lib... .
Не спрашивайте о производительности только, гм. (В тоже время на фоне самого IO, его разбор не будет горлышком бутылки).

14. analizerDZhon /13 28.09.2011 06:12 mcabber

бутс не нужен

15. Rayslavaanalizer /14 28.09.2011 06:13 Office

Наоборот. Плюсы без буста не нужны :)

16. mvaRayslava /15 28.09.2011 06:13 Psi+

ни плюсы ни буст не нужны

17. analizerRayslava /15 28.09.2011 06:13 mcabber

есть мнение что ты ниасилил плюсцы

18. DZhonanalizer /14 28.09.2011 06:15

okay :(

19. Rayslavaanalizer /17 28.09.2011 06:15 Office

Есть мнение, что ты не смотрел ни одной вакансии по плюсцам. Буст требуют чуть менее, чем везде.

20. analizerRayslava /19 28.09.2011 06:16 mcabber

ошибочное мнение, да

21. DZhonRayslava /19 28.09.2011 06:18

Попиши на бусте еще этих мягких французских булок и ТРАВИСЬ СУКА ТРАВИСЬ ХАРДКОР ШАБЛОНЫ ПЕРЕКУР ЗА КОМПИЛЯЦИЕЙ ЛОГ ОШИБОК БОЛЬШЕ ДОСТИЖЕНИЙ ТВОЕЙ ЖИЗНИ, ну и так далее.

P.S: Немного сгустил краски.

22. RayslavaDZhon /21 28.09.2011 06:19 Office

Ну я когда смотрел — из двух десятков найденных, в пятнадцати был нужен буст.

23. DZhonRayslava /22 28.09.2011 06:20

95% населения (как и я, например) — идиоты, ок.
Вообще, это просто способ проверить, осилятор ты или нет, но не факт, что будет использоваться и вообще приветствуется.

24. dorfeanalizer /12 28.09.2011 14:17

цпп и type-safety? ;-)

25. dorfeanalizer /20 28.09.2011 14:19

+1

Do you really want to delete ?