Tengo una simple pregunta: ¿Hay alguna manera de hacer un strlen()
-como recuento de caracteres en char16_t
matriz con cero-terminado?C++ 11 char16_t strlen-equivalent function
11
A
Respuesta
18
uso
char_traits<char16_t>::length(your_pointer)
ver 21.2.3.2 struct char_traits<char16_t>
y tabla 62 de la C++ 11-Std.
1
Utilice los punteros :), cree un puntero duplicado al inicio, luego repáselo while (*endptr++);
, luego la longitud está dada por endptr - startptr
. En realidad, puede crear una plantilla, sin embargo, es posible que la compilación no genere el mismo código intrínseco para strlen
(para diferentes tamaños de c).
Cuestiones relacionadas
- 1. C++ 11 variad std :: function parámetro
- 2. C++ integer floor function
- 3. C# Variable = new function() {};
- 4. C# Generics function
- 5. C++ virtual function return type
- 6. C++ 11 semántica "automática"
- 7. Delegado en C++ 11
- 8. C++ 11 regex_token_iterator
- 9. C++ 11 macro predefinida
- 10. C++ 11 std :: array
- 11. C++ 11 error enable_if
- 12. javascript function vs. (function() {...}());
- 13. Usando auto y decltype en C++ 11
- 14. C++ 11 thread_local palabra clave compatible en visual studio 11
- 15. ¿Cómo actualizar a C++ 11?
- 16. clang ++ invocación de C++ 11
- 17. C++ 11: ¿un nuevo idioma?
- 18. Boost.Regex vs C++ 11 Regex
- 19. C++ 11 lambda en decltype
- 20. C++ 11 inicializar el mapa
- 21. C++ 11 vector push_back ambigua
- 22. C++ 11 future_status :: diferida no
- 23. C++ 11 alternativa a localtime_r
- 24. C++ 11 Estructura correcta inicialización
- 25. C11/C++ 11 Memoria Modelo
- 26. especialización parcial en C++ 11
- 27. C++ 11 biblioteca de reflexión
- 28. ¿Qué significa esta construcción C++/C++ 11?
- 29. C++ wrapper para boost/C++ 11
- 30. operaciones atómicas para shared_ptr en C++ 11
ouch, que se ve feo, aunque es muy, muy corto ... Por cierto, no estoy insultando tu código, es extraño que no haya sobrecarga para strlen o wstrlen ... – NoSenseEtAl
@NoSense: si has si alguna vez miró la fuente de CRT para MS o GCC, verá que usan este método para strlen et al. Ofc no es tan rápido como el nivel de ensamblaje, como las instrucciones de cadena SSE 4.1 o el buen viejo 'REP SCAS', pero para eso son intrínsecos;) hay artículos en versiones basadas en sse (el gcc incluso tiene algunas variantes). pero esto restringe tu hardware – Necrolis
Ok, genial, de hecho, estoy usando GCC. ¿Tiene gcc alguna función de envoltura alrededor de cosas asm? Me refiero a algo como __wstrlen (const char16_t * str) – NoSenseEtAl