template<typename T>
_TCHAR* itot(T n)
{
static _TCHAR str[] = _T("000,000,000,000,000,000,000,000");
_TCHAR* ptr = str + (sizeof str / sizeof str[0] - 2);
_TCHAR sign = ',';
unsigned int underflow = 0;
unsigned int back = 0;
if (n < 0)
{
if (n == -n)
{
n++;
underflow = 1;
}
n = -n;
sign = '-';
}
do
{
ptr[ 0] = n % 10 + '0';
ptr[-1] = n / 10 % 10 + '0';
ptr[-2] = n / 100 % 10 + '0';
back = n;
n /= 1000;
ptr -= 4;
} while(n);
str[sizeof str / sizeof str[0] - 2] += underflow;
ptr += (back < 100) + (back < 10) + 1;
*ptr = sign;
return ptr + (sign == ',');
}
안 깔끔한데요 :p
배열 초기화 식이 너무 거추장스러움...
{_T('a'), _T('b'), ..., _T(0)} 하실 필요 없이 _T("ab...") 해도 되잖아요?
2차원 배열쓰기 싫어성
back 이 깔끔해진거야.
str 초기화 식 말한 건데요 :p
char hello[] = "hello world";를 잊으신 건 아니시겠죠? ㅋㅋ :p
걍 스트링 하나로 써야겠다.
2차원 배열이라고 말씀하시는 게 이해가 잘 안되는데요 ㄷㄷ
근데 메리가 싫어할텐데
ㅋㅋㅋㅋ
_T랑 _TEXT랑 같은 걸텐데 _TEXT로 하셨네요 ㅋㅋ _T가 더 짧아서 좋지 않나요? :p
아 저는 물론 TEXT(...)를 애용하는 편이에요. _T는 windows.h를 인클루드했더라도 무조건 tchar.h를 인클루드해야 하는데 TEXT(...)는 windows.h든 tchar.h든 하나만 인클루드해도 쓸 수 있죠.
웅 난 내가 만든 스트링 클래스 쓰기 땜에 저거 잘 안썽.
근데 한가지 문제를 깨달았다.
비밀로 해야지.
절대값이 매우 큰 음수에선 마이너스 부호가 str[-1]에 써지는 버그 말씀이신가요? 뭐 저는 아까부터 눈치 채긴 했는데 에이 코세 성님인데 잘 되는 코드니깐 올리신 거겠지 하고 넘겼는데... 설마 저 버그 맞음?
그게 맞으면 걍 str 초기화할 때 맨 앞에 000, 만 더 덧붙여주면 되잖아요 ㅋㄷㅋㄷ
스트링 자릿수는 널럴해.
유종의 미를 거뒀다 : )
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.