cuál es la diferencia entre cadenas de C y cadenas de C++. Especialmente mientras se hace la asignación de memoria dinámica¿Cuál es la diferencia entre cadenas de C y cadenas de C++?
Respuesta
casi no saben por dónde empezar :-)
En C, las cadenas son sólo char
matrices que, convencionalmente, terminan con un byte NUL. En términos de gestión de memoria dinámica, puede simplemente malloc
el espacio para ellos (incluido el byte adicional). La gestión de memoria cuando la modificación de cadenas es su responsabilidad:
char *s = strdup ("Hello");
char *s2 = malloc (strlen (s) + 6);
strcpy (s2, s);
strcat (s2, ", Pax");
free (s);
s = s2;
En C++, cuerdas (std::string
) son objetos con toda la gestión de memoria automática asociada y el control de lo que los hace mucho más seguro y más fácil de usar, especialmente para la principiante. Para la asignación dinámica, usar algo como:
std::string s = "Hello";
s += ", Pax";
sé lo que me había prefieren utilizar, éste último. Puede (si necesita uno) construir siempre una cadena C de std::string
utilizando el método c_str()
.
'std :: string' son objetos con ... – dmckee
¡Maldito seas c_str()! –
C cadenas ++ son mucho más seguro, más fácil, y que soportan diferentes funciones de manipulación de cadenas, tales como añadir, buscar, copiar, concatenación, etc.
una diferencia interesante entre cadena de C y C++ cadena se ilustra con el siguiente de ejemplo
#include <iostream>
using namespace std;
int main() {
char a[6]; //c string
a[5]='y';
a[3]='o';
a[2]='b';
cout<<a;
return 0;
}
salida »¿boRy¤ £ f · Pi» ¿
#include <iostream>
using namespace std;
int main()
{
string a; //c++ string
a.resize(6);
a[5]='y';
a[3]='o';
a[2]='b';
cout<<a;
return 0;
}
salida chico
Espero que tengas el punto !!
Este tipo de comportamiento de C es lo que causa errores como Heartbleed. – saolof
- 1. diferencia entre dos cadenas de C#
- 2. ¿Cuál es la diferencia entre C++ administrado y C#?
- 3. ¿Cuál es la diferencia entre Visual C++ y C++?
- 4. ¿Cuál es la diferencia entre C y C incrustado?
- 5. ¿Cuál es la diferencia entre Managed C++ y C++/CLI?
- 6. ¿Cómo encontrar la diferencia entre dos cadenas?
- 7. ¿Cuál es la diferencia entre las cadenas de markov y el modelo de markov oculto?
- 8. ¿Cuál es la diferencia entre% s y% d en el formato de cadenas de Python?
- 9. ¿Cuál es la diferencia entre los tipos de cadenas VARCHAR (255) y TINYTEXT en MySQL?
- 10. ¿Cómo combinar cadenas de C++ y cadenas de Arduino?
- 11. Cuál es la diferencia entre memset y memcpy en C
- 12. ¿Cuál es la diferencia entre File y FileInfo en C#?
- 13. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?
- 14. ¿Cuál es la diferencia entre System.Type y System.RuntimeType en C#?
- 15. ¿Cuál es la diferencia entre Ctrl-C y SIGINT?
- 16. ¿Cuál es la diferencia entre Objective-C y Cocoa?
- 17. ¿Cuál es la diferencia entre printf() y puts() en C?
- 18. ¿Cuál es la diferencia entre 'int'? y 'int' en C#?
- 19. ¿Cuál es la diferencia entre C# y .NET?
- 20. ¿Cuál es la codificación predeterminada para las cadenas C?
- 21. Cuál es la diferencia entre & y operadores & en C#
- 22. ¿Cuál es la diferencia entre Ctrl + C y Ctrl + [?
- 23. C#: ¿Cuál es la diferencia entre TypeDescriptor.GetAttributes() y GetType() .GetCustomAttributes?
- 24. ¿Cuál es la diferencia entre Process y ProcessStartInfo en C#?
- 25. Objetivo-C: ¿Cuál es la diferencia entre forKey y forKeyPath?
- 26. ¿Cuál es la diferencia entre Const y Static en C#?
- 27. ¿Cuál es la diferencia entre dynamic (C# 4) y var?
- 28. ¿cuál es la diferencia entre atan y atan2 en C++?
- 29. ¿cuál es la diferencia entre -C y gzipping un mysqldump?
- 30. ¿Cuál es la diferencia entre Xcode, Objective-C y Cocoa?
¿Se refiere a la diferencia entre el uso de cadenas 'char *' y 'char []' en los dos idiomas, o la diferencia entre cadenas 'char' y' std :: string'? – dmckee
Defina lo que quiere decir con "cadena C" y "cadena C++". Ambos (especialmente el último) son ambiguos. – strager
Lea http://www.cplusplus.com/reference/string/string/ y http://www.macdonald.egate.net/CompSci/hstrings.html –