- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 
/// Checks if the token is number or not
bool is_number(char* test_val)
{
    const char* ROW = "0123456789\0";
    
    for (int i = 0; i < strlen(test_val); i++) {
        for (int j = 0; j < strlen(ROW); j++) {
            if (test_val[i] == ROW[j]) {
                goto next;
            }
        }
        return false;
        next:
    }
    return true;
}
                                
 Follow us!
Можно было бы по карте Карно попытаться сократить, но вряд ли что-то из этого выйдет
даже на сишке это может выглядеть лучше
мамкин хакир может while переписать на for
а борманд и 3.1415 могут поделить строку на uint64_t и въебать на ксорах, битмасках и лсд спец олимпиадное решение без сравнений
а программист должен взять std::isdigit(std::locale), потому что в японском цифры бывают вообще не те!
https://ideone.com/3tyvcw
https://wandbox.org/permlink/8pHFVfgWmKDwO05s
Поддержка плюса, шестнадцатеричных чисел и локали планируется в следующих версиях.
Правда, в этом случае он для задачи подходит так себе (отрицательные числа не обрабатывает, переполнения тоже), а уж когда понадобится проверять плавающих питухов — тупой фор превратится в адовую портянку.
ec - тоже очень говорящее поле. Почему не error_code?
Из «Буста», быть может? Там, ЕМНИП, «ec» распространено.
Чего стоят ate (at end) и showmanyc (stream how many characters).
хорошо что я больше не настоящая крестоблядь!
а также буст.лексикал-каст, который это вполне эксплойтил в дефолт шаблоне
а для больших фоннатов пирформанса был буст спирит, который реально пыщ пыщ здорово разбирал поток на токены
я и говорю - всё больше какой-то хуйни изобретают
самое главное - исходно никто не просил проверять, что значение влезет в какой-то дефолтный числовой тип
Всё новое - это хорошо забытое старое. Они же тупо старый добрый сишный strtoll в итераторы завернули, ничего нового придумать не сумели. Даже вон сишный код ошибки возвращают.
Теперь можно явно задавать тип/размер проверяемого числа. Даже плавающих питухов поддерживает!
https://wandbox.org/permlink/v38nFlIvEvyM3nNN
Это число.
Ты умеешь переводить рандомные символы?
З.Ы. А ну да, собачка на 0x40.
но '0' and '9' охуенно наглядно, бесплатно и эквивалентно каким-то хакирным кодам символов
Обижаешь, у него там кубическая сложность из-за strlen().
А зачем здесь писать что-то в память?
https://wandbox.org/permlink/OjZAbDNnsZmxeYKz
UPD: Сделал конец более хакирным.
ну вот, вместо одной строки стало четыре. Вечно вы всё усложняете...
ладно, минус я профукал, признаю
А ещё NULL и "". Но если игнорировать (как ТС-код и делает, кстати), то можно вот так загольфить:
https://wandbox.org/permlink/lahbG8Yhe6WPk87V
Но знаешь, мой код оптимизирован на перформанса, так что маргинальными случаями можно и пренеберечь. Я в доке напишу, что NULL, минус, пробел, разделитель разрядов и пустая строка в бесплатной версии не поддерживаются
Кстати, вореант с вычитанием выглядит быстрее:
Сравнение в цикле только одно, джамп тоже один.
https://gcc.godbolt.org/z/r7o3nP
!"#$%&
А, ты же не зря там u написал. Хитро.
https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf
http://kurtstephens.com/files/p372-steele.pdf
Кстати
https://www.cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf
Ну да, вот именно поэтому я за «from_chars» (хотя с хвостовыми пробелами моя версия соснёт, кажется).
> ну и в зависимости от локали разрешать ещё разделители тысяч, опять же поддерживать японские цифры
А вот именно поэтому я за «Python»: