2011-04-28 7 views

답변

1

포인터를 사용하여 :) 시작 부분에 대한 중복 포인터를 만든 다음 while (*endptr++);을 반복하면 그 길이는 endptr - startptr입니다. 그러나 실제로 템플릿을 만들 수는 있지만, 가능한 컴파일은 strlen (다른 크기의 ofc)에서 수행하는 것과 동일한 내장 코드를 생성하지 않습니다.

+0

비록 매우 짧은 것이지만,보기 흉하게 보입니다 ... BTW 나는 strlen이나 wstrlen에 과부하가 없다는 것을 당신의 코드에 모욕하지 않습니다. – NoSenseEtAl

+1

@NoSense : 만약 당신이 MS 나 GCC 용 CRT 소스를 보았을 때 strlen 외에도이 방법을 사용하는 것을 볼 수 있습니다. Ofc는 SSE 4.1 문자열 명령이나 오래된 REP SCAS와 같은 어셈블리 레벨만큼 빠르지 만 본질은 무엇인지에 대한 것이므로) sse 기반 버전에 대한 기사가 있습니다 (gcc에는 몇 가지 변형이 있습니다). 그러나 이것은 당신의 하드웨어를 제한합니다. – Necrolis

+0

사실 저는 GCC를 사용하고 있습니다. gcc는 asm 항목 주위에 래퍼 함수를 ​​가지고 있습니다. 내 말은 __wstrlen (const char16_t * str)과 같은 것을 의미합니다. – NoSenseEtAl