Was ist der Unterschied zwischen C-Strings und C++ - Strings. Speziell während dynamische Speicherzuweisung tunWas ist der Unterschied zwischen C-Strings und C++ - Strings?
Antwort
kaum, wo ich weiß :-)
In C beginnen, sind Strings nur char
Arrays, die per Konvention Ende mit einem NUL-Byte. In Bezug auf die dynamische Speicherverwaltung können Sie einfach den Platz für sie (einschließlich des zusätzlichen Bytes) malloc
. Speicherverwaltung beim Ändern Strings ist Ihre Verantwortung:
char *s = strdup ("Hello");
char *s2 = malloc (strlen (s) + 6);
strcpy (s2, s);
strcat (s2, ", Pax");
free (s);
s = s2;
In C++, Streicher (std::string
) sind Objekte mit allen dazugehörigen automatischen Speicherverwaltung und Steuerung, die sie sicherer viel macht und einfacher zu bedienen, vor allem für die Anfänger. Für die dynamische Zuordnung verwenden so etwas wie:
std::string s = "Hello";
s += ", Pax";
Ich weiß, welche Ich würde verwenden möchten, letztere. Sie können (wenn Sie eine benötigen) immer eine C-Zeichenfolge aus einem std::string
mit der Methode c_str()
konstruieren.
'std :: string' sind Objekte mit ... – dmckee
Verdammt Sie c_str()! –
C++ Strings sind viel sicherer, einfacher und sie verschiedene String-Manipulation Funktionen wie append unterstützen, findet, kopieren, Verkettung usw.
ein interessanter Unterschied zwischen c-Schnur und C++ String wird durch folgendes Beispiel illustriert
#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;
}
Ausgang »¿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;
}
Ausgabe Junge
Ich hoffe, du hast den Punkt !!
Diese Art von Verhalten von C verursacht Fehler wie Heartbleed. – saolof
- 1. Was ist der Unterschied zwischen .Equals und ==
- 2. Was ist der Unterschied zwischen% c und% C in printf?
- 3. Was ist der Unterschied zwischen verwaltetem C++ und C#?
- 4. Was ist der Unterschied zwischen C und eingebettetem C?
- 5. Was ist der Unterschied zwischen Managed C++ und C++/CLI?
- 6. Was ist der Unterschied zwischen C++ und Visual C++?
- 7. Was ist der Unterschied zwischen C# und visueller C#?
- 8. Was ist der Unterschied zwischen `==` und `ist`?
- 9. Was ist der Unterschied zwischen:.! und: r !?
- 10. Was ist der Unterschied zwischen Difftime und '-'?
- 11. Was ist der Unterschied zwischen $ und $$?
- 12. Was ist der Unterschied zwischen Verilog! und ~?
- 13. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 14. Was ist der Unterschied zwischen/* ... */und/** ... */
- 15. Was ist der Unterschied zwischen `&` und `ref`?
- 16. Was ist der Unterschied zwischen $ (...) und `...`
- 17. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 18. Was ist der Unterschied zwischen + = und = +?
- 19. Was ist der Unterschied zwischen? und ? = Nil
- 20. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 21. Was ist der Unterschied zwischen Ereignissen in VB und C#?
- 22. Was ist der Unterschied zwischen C# und .NET?
- 23. Was ist der Unterschied zwischen 'int?' und 'int' in C#?
- 24. Objective-C: Was ist der Unterschied zwischen NULL, Nil und @ ""?
- 25. Was ist der Unterschied zwischen CLR und DLR in C#?
- 26. Was ist der Unterschied zwischen C#, .NET und CLI?
- 27. Was ist der Unterschied zwischen memset und memcpy in C
- 28. In C# Was ist der Unterschied zwischen ToUpper() und ToUpperInvariant()?
- 29. Was ist der Unterschied zwischen Environment.SpecialFolder.CommonStartMenu und Environment.SpecialFolder.StartMenu in C#?
- 30. Was ist der Unterschied zwischen _tmain() und main() in C++?
Meinst du den Unterschied zwischen der Verwendung von 'char *' und 'char []' Zeichenketten in den zwei Sprachen, oder der Unterschied zwischen 'char' basierten Strings und' std :: string'? – dmckee
Bitte definieren Sie, was Sie mit "C-String" und "C++ String" meinen. Beide (besonders die letzteren) sind mehrdeutig. – strager
Lesen Sie http://www.cplusplus.com/reference/string/string/ und http://www.macdonald.egate.net/CompSci/hstrings.html –