Estoy buscando el código para la clase de cadena C++. ¿En qué encabezado está implementado?Donde puedo encontrar la implementación para std :: string
Respuesta
No hay una implementación única para std::string
. Pero puede encontrar su implementación particular en el encabezado <string>
.
En mi sistema se puede encontrar aquí:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.0/include/g++-v4/bits/basic_string.h
y /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.0/include/g++-v4/bits/basic_string.tcc
En un sistema basado en Debian:
~$ locate basic_string.tcc
/usr/include/c++/4.5/bits/basic_string.tcc
/usr/include/c++/4.6/bits/basic_string.tcc
~$ locate basic_string.h
/usr/include/c++/4.5/bits/basic_string.h
/usr/include/c++/4.6/bits/basic_string.h
~$
Por lo general, van a estar buscando la plantilla basic_string
, ya que std::string
es solo una especialización de eso.
Como era de esperar,
<string>
que lo más probable es que se encuentra en cualquier include
directorio de su compilador tiene como su base.
tiene razón, pero tenga en cuenta que (IIRC) '
No es un archivo en VMS; los archivos de encabezado están contenidos en 'librerías de texto', sean lo que sean. Por qué, no tengo idea. –
Está en <string>
. Es un archivo de cabecera distribuido con tu compilador. Puede incluir otros archivos de encabezado (privados): gran parte de la implementación de Visual Studio se encuentra en un archivo llamado "xstring".
Una pregunta similar con la respuesta para Visual Studio: https://stackoverflow.com/a/17205896/5520058
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crt\src\
La versión y la ubicación de Visual Studio se pueden cambiar. Esta es la ruta de instalación predeterminada donde se pueden encontrar las fuentes.
versiones de Visual Studio:
- 2005 -> 8
- 2008 -> 9
- 2010 -> 10
- 2012 -> 11
- 2013 -> 12
- 2015 -> 14
- 1. Rendimiento std :: strstr vs std :: string :: encontrar
- 2. std :: string :: reemplazar implementación estándar?
- 3. Encontrar donde std :: out_of_range es arrojado por std :: vector.at()
- 4. donde puedo encontrar Ext.ux.CheckColumn
- 5. std :: string :: longitud() vs. std :: string :: size()
- 6. Donde puedo encontrar @Inject jar
- 7. lenguaje apropiado para la asignación std :: string
- 8. de clasificación en std :: mapa donde clave es un std :: string
- 9. ¿Dónde puedo encontrar la implementación de XMLHttpRequest?
- 10. Usando un iterador std :: string para encontrar el inicio y el final de la cadena
- 11. std :: string :: iterador para compensar y volver
- 12. ¿Es conforme una implementación de std :: string donde 's.c_str() + s.size()' no es necesariamente lo mismo que '& s [s.size()]'?
- 13. Usando std :: string como clave para std :: map
- 14. SWIG: Cómo ajustar std :: string & (std :: string pasado por referencia)
- 15. Wix, donde puedo encontrar WixUI_InstallDir.wxs e InstallDirDlg.wxs
- 16. donde puedo encontrar el php.ini para php-cli
- 17. Donde puedo encontrar un buen tutorial para IJG libjpeg
- 18. idioma correcto para std :: string constants?
- 19. Comprender la eficacia de std :: string
- 20. Cómo invertir una std :: string?
- 21. Cómo convertir System :: String^en std :: string?
- 22. Convertir flotador para std :: string en C++
- 23. operator std :: string() const?
- 24. std :: string vs. char *
- 25. std :: vector <std::string> crash
- 26. la memoria usada por un std :: string
- 27. C++ std :: string to boolean
- 28. C++/CLI La conversión de Sistema :: string^std :: string
- 29. std :: async: ¿uso dependiente de la implementación?
- 30. Convierte uint64_t en std :: string
Gracias. Aparece solo el prototipo del método que estaba buscando: find() es allí "tamaño_tipo find (const _CharT * __s, size_type __pos, size_type __n) const;" – Alan
ahhh lo siento. Lo he encontrado en basic_string.tcc. ¡Gracias! – Alan
la implementación de gcc está aquí: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/libstdc++/api/a01053_source.htm –