Кресты / Говнокод #4608 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
char* setw_c(int width, char* str, const char align){
    width = width - strlen(str) / 2; 

    if (align == 'l'){
        std::cout << str;
        if (width > 0)
            for (int i = 0; i < width - 1; i++)
                std::cout << " ";
		return " ";
    } else {
        if (width > 0)
            for (int i = 0; i < width; i++)
                std::cout << " ";
		return str;
    }
}

вот так коряво я решил проблему с setw(), кириллицей и utf-8.
strlen() - чуть ли не единственная функция из cstring, более-менее нормально работающая с кириллицей в utf-8, да и то возвращает не реальную длину, а в два раза бОльшую, т.к. в utf-8 символ кириллицы занимает 2 байта, вместо одного, чего эта функция не учитывает.

Запостил: bugaga_ bugaga_, (Updated )

Комментарии (8) RSS

  • Поправка, return str; и return " "; должны стоять под своими if() и, в случае выравнивания по левому краю, будет выведен лишний пробел.
    Ответить
  • wchar_t надо было использовать и std::wstring, а не городить костыли на велосипеде
    Ответить
  • > вот так коряво я решил проблему с setw(), кириллицей и utf-8.

    решил??????

    выпей яду/убей себя об стену.
    Ответить
    • Не думаю, что при таком отношении к автору, ему захочется в следующий раз делиться говнокодом. 😉
      Ответить
      • я уверен что автору глубоко по барабану.

        если бы не было по барабану, то он бы 2 минуты своего драгоценного времени потратил чтобы гуглянуть как с utf-8/Unicode правильно работать надо - прежде чем вот это здесь постить.
        Ответить
          • автору по барабану, но не глубоко, договорились ? 🙂
            Ответить
  • > strlen() - чуть ли не единственная функция из cstring, более-менее
    > нормально работающая с кириллицей в utf-8, да и то возвращает
    > не реальную длину, а в два раза бОльшую
    ВНЕЗАПНО!!!!1
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8