Бля он ебнутый
Цпп же
Нахуй это нужно?
melvin
Вот и я думаю...
melvin
Нахуй это нужно?
melvin
Почему обсуждают си строки? D:
разве си не подмножество си++?
Andrei
Не в чистом виде.
Andrei
Ну и это не отменяет того, что с-строки в плюсах лучше не использовать.
Anatoly
Ну и это не отменяет того, что с-строки в плюсах лучше не использовать.
Ещё б в плюсах к строкам человеческий форматный вывод прикрутили... (a-la sprintf)
Andrei
Эм.
Andrei
есть же стримы
Andrei
std::stringstream
Anatoly
std::stringstream
Во-первых, буээээ.
Andrei
Какие-то разумные аргументы?
Anatoly
Во-вторых, как к ним прикрутить форматные строки в стиле printf ()?
Anatoly
Или gettext?
Andrei
В чем разница?
Andrei
Функционально стримы позволяют делять всё то же самое что и printf
Anatoly
Только вместо одной строки это оазмазывается в compile-time кашу на type conversions
Andrei
Это же хорошо.
Anatoly
В результате норот пишет http://www.boost.org/doc/libs/1_53_0/libs/format/doc/format.html
Anatoly
Хрена с два это хорошо. Прикрути туда gettext, ага.
Andrei
Прости, не очень понимаю.
Andrei
Что за gettext?
Anatoly
Ну и модификаторы эти дибильные в плюсовом стиле. Представь, что надо вывести 3 числа с разной точностью. Каждый раз переключаться?
Anatoly
Что за gettext?
А, ну тогда ясно.
Andrei
ну во-первых есть гораздо более безопасный vsprintf
Anatoly
https://en.m.wikipedia.org/wiki/Gettext
Andrei
Да, я понял уже.
Anatoly
ну во-первых есть гораздо более безопасный vsprintf
Аналог vsprintf-а для c++ строк - в студию!
Andrei
сишный можно использовать
Andrei
просто не читсый sprintf
Anatoly
Сишный сасёд
Anatoly
Так как выделение памяти надо сбоку поикручивать
Andrei
Цикл с ресайзом.
Andrei
Не очень сложно.
Andrei
В любом случае, это не c++ way
Anatoly
Вот и получается: в одном решении нет формата, но есть выделение памяти, в другом решении формат есть, но приходится вручную выделять память и следить за размерами. Ужоснах.
Andrei
отсутсвие типобезопасности гораздо хуже.
Anatoly
Цикл с ресайзом.
Буэээ Ведь можно ж было б протащить в стандарт решение в стиле asprintf ()...
Anatoly
В любом случае, это не c++ way
Там я сверху кинул ссылку на буст.
Andrei
Я видел.
Andrei
буст не с++
Andrei
Далеко не всегда с++-way
Anatoly
отсутсвие типобезопасности гораздо хуже.
Иногда достаточно просто printf ("%u", (unsigned int) x).
Anatoly
Правда, создатели C крупно проебались с типами.
Andrei
в таком случае и в стрим можно записать без особых попоболей
Anatoly
И теперь надо юзать inttypes.h с PRIu32 etc
Andrei
<cstdint>
Andrei
Всмысле, как?
Anatoly
И?
Andrei
это был на это ответ
Andrei
И теперь надо юзать inttypes.h с PRIu32 etc
Andrei
<cstdint>
Anatoly
И как ты это в стрим запишешь?
Andrei
std::cout«static_cast<uint32_t😠x);
Andrei
Или я чего-то не понимаю?
Anatoly
Можно и cout << x, но вопрос-то не в этом.
Anatoly
В C конверсия нужна для типобезопасности.
Anatoly
В плюсах ввод-вывод типобезопасен, но нет формата (в стандарте, буст не в счёт).
arisudesu
iomanip
Andrei
Так а чем тебе не формат стримы с iomanip ?
🦥Alex Fails
strtok норм вещь, только стреляющая)
Anatoly
Gettext, йопта
Andrei
что ты заладил со своим gettext
Andrei
что, других нет локализаторов нет что ли?
Andrei
плюсовых
Anatoly
Iomanip - во-первых, компайлтайм. Во-вторых, надо не забывать сбрасывать. В-третьих, длинно.
🦥Alex Fails
есть код char * token = strtok(text," ,.?!"); while(token!=some_word) { //некоторые действия token = strtok(NULL," ,.?!"); // почему тут нулл? }
если функции strtok передавать нулл первым указателем, то она будет использовать предыдущие токены
Andrei
Компайл-тайм это же наоборот хорошо, лол.
Andrei
В чем проблема.
Anatoly
Да, в плане локализации иногда бывает полезно поменять параметры местами. В printf я могу так сделать. А iomanip так могёт?
Andrei
Iomanip - во-первых, компайлтайм. Во-вторых, надо не забывать сбрасывать. В-третьих, длинно.
Обычный трейд-офф между ленью программиста и безопасностью :D
Anatoly
Компайл-тайм это же наоборот хорошо, лол.
І знов за рибу гроші. Я ему полчаса за геттекст говорю, а он мне за компиляцию. Не, я понимаю, что для всяких рубей и питонов это один чёрт...
Andrei
Всё, господи, я понял зачем тебе не компайлтайм.
Andrei
Ладно. Когда ты пишешь мультиланг программу я согласен приходится поебаться.