+156
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 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_,
13 Ноября 2010
bugaga_ 13.11.2010 08:12 # 0
absolut 13.11.2010 09:13 # +5
Dummy00001 13.11.2010 22:50 # +1
решил??????
выпей яду/убей себя об стену.
xaionaro 21.11.2010 22:14 # 0
Dummy00001 21.11.2010 22:53 # 0
если бы не было по барабану, то он бы 2 минуты своего драгоценного времени потратил чтобы гуглянуть как с utf-8/Unicode правильно работать надо - прежде чем вот это здесь постить.
xaionaro 22.11.2010 21:02 # 0
absolut 22.11.2010 22:48 # 0
bugmenot 13.11.2010 23:01 # +3
> нормально работающая с кириллицей в utf-8, да и то возвращает
> не реальную длину, а в два раза бОльшую
ВНЕЗАПНО!!!!1