Constantine
ну ведь предъяви контрпример это int x; if (x) std::cout << "Hello, world!";
Constantine
как на счет стандарта ?
ну так сгенерируй мне тест кейз
Ioann_
Ну у Беркуса, есть ли что то читерское в коде ?
MrSmith
https://hastebin.com/qeyukugiku.rb есть идеи как пофиксить?
MrSmith
С этой https://github.com/Fihtangolz/simpleClionProject_STM32/
Constantine
Ну у Беркуса, есть ли что то читерское в коде ?
Да, он создал wostringstream с локалью
Ioann_
Я разбираю этот момент, я думаю, что здесь надо сесть основательно разобраться, как и обещал - отпишу, о том что найду
Constantine
При этом С++ локализация работает так замечательно, что я не представляю ни одного долбанутого локаль-кода, который эта программа примет
Ioann_
Код Беркуса у меня лично падает :)
Constantine
верни en_US
Ioann_
Constantine
починил назад
Constantine
а, хех
Constantine
не поддерживает ваша система такую локаль)
Berkus
en_US.UTF8 локаль
Constantine
ну вон перед тобой провал setlocale на неё
Berkus
ну чувак
Berkus
ты не понимаешь как локали работают что ли?
Constantine
понимаю
Berkus
локаль должна быть сгенерена и доступна в системе
Constantine
а ты мне предлагаешь протестить твой код
Berkus
я про wandbox пишу, а не ебу какие у тебя на системе локали - найди и поставь правильную
Constantine
у меня в винде работает тамильская норм
Ioann_
Ну такой локали у меня нету, просто у БЕркуса не очень ясно с разделителями в тысячных
Berkus
ну вот и збс, ее и поставь
Ioann_
https://wandbox.org/permlink/SNFJJU7G2WNFIVUI
Constantine
только С не примет
Ioann_
https://wandbox.org/permlink/SNFJJU7G2WNFIVUI
Т.е тут конечно надо было через imbue делать
Constantine
беркус, скажи, вот этот код под русской локалью выведет точку или запятую, если вывести флоат?
Berkus
да, пожалуй надо было
Ioann_
тьфу, не то скинул, надо было так: #include <iostream> #include <sstream> int main() { std::wcout << "Locale selected: " << setlocale(LC_ALL, "en_US.UTF8") << std::endl; lconv* lc = localeconv(); std::wcout << "Thousands separator " << lc->thousands_sep << std::endl; std::uintmax_t v = 100500; std::wcout << v << std::endl; }
Constantine
т.е. ты мне втираешь, что под всеми локалями инты одинаково выводятся или что это на самом деле локаль-независимый код?
Ioann_
me ?
Constantine
нет, я все еще не видел кейса где uintmax_t не работает. будет?
я все еще не видел теста для этой программы не любой не-английской локалью, будет?
Constantine
thousands по умолчанию скорее всего не выводятся и поэтому наличие разделения тысяч - не показатель ничего вообще
Ioann_
Вот и я о том же, скажите мне, какую локаль выбрать б, или как ее в систему занести б, чтобы я мог протестировать и сказать какой метод рабочий и так далее ?
Berkus
на вандбоксе мало локалей стоит
Ioann_
А то и Беркус и Константин уверены в своих точках зрения, но кто-то же должен быть не прав
Dmitry
можно как то через env цмейку опции задать?
Dmitry
cmake -DMY_OPT=ON ⟶ MY_OPT=ON cmake
Dmitry
внезапно вот надо(
Dmitry
https://github.com/ethereum/evmjit/issues/136
Dmitry
здесь человек хочет собрать LLVM без zlib, не меняя ебилд
Constantine
ну как обычно, открываешь localeconf, включаешь локаль, прогоняешь localegen, а вейт, ты же на винде...
а вейт, в стандарте не прописаны имена поддерживаемых локалей
Berkus
есть только две стандартных - "C" и ""
Constantine
угу, поэтому чтобы построить тебе контрпример мне нужна система с нативным арабским
Berkus
бида!
Constantine
хотя проще с нативным русским получить запятую в качестве decimal separator и выяснить, что поток вывода в строку работает под текущей локалью
Constantine
а не под С
Constantine
и твой код по стандарту выводит все-таки локаль-зависимым способом
Berkus
ну окей
Berkus
значит я облажался, прости
Berkus
будет время - придумаю какой-то другой способ
Constantine
чсх походу облажался я
Constantine
ну ок, буду знать, что s-потоки работают под С
Constantine
Constantine
как и std::cout... хм
Berkus
ты про то, что они внутри ходят за сишной локалью?
Constantine
ох вейт
Constantine
Constantine
они по умолчанию из другого места локаль берут
Berkus
кек, ну я уже сказал
Constantine
чсх цифры из винды они не подцепили
Constantine
Ioann_
قبقثز نتقبنة رغف لتؤىبيلاىة
Ioann_
Какую локаль мне поставить, чтобы циферки стали не циферками ?
Ioann_
А то я поставил арабскую(Саудовская Аравия)
Constantine
у телеграмма есть проблемы со странными
Ioann_
И все равно, цифры цифрами
Ioann_
Так у меня даже в консолюшке