Hat jemand eine freigegebene Bibliothek, die die string.h-Funktionen implementiert, aber mit einer Struktur anstelle von char *
Schnüre weitergeben?
Das habe ich.
Vor 11 Jahren, als ich C lernte, habe ich die gesamte <string.h>-Bibliothek neu implementiert und dafür gesorgt, dass Reallokationen verwendet wurden, wenn mehr Platz in der Zeichenkette benötigt wurde.
Aber damals war es zu Lernzwecken (seitdem bin ich zu C++ gewechselt und verwende jetzt std::string).
Gibt es einen bestimmten Grund, warum dies eine schlechte Idee wäre?
Ich denke, es kann eine gute Idee sein, es selbst zu versuchen: Auf diese Weise können Sie sich mit der richtigen API sowohl die Länge der Zeichenkette als auch die Größe des Puffers und vielleicht sogar einen Referenzzähler merken, wenn Sie mit Copy-on-Write-Konzepten spielen wollen. Ihre Zeichenkette wird komplexer, aber in einigen Fällen effizienter sein als die Standardzeichenkette. Und das ist eine gute Lernerfahrung.
Aber für die Produktion Code, wie immer, entweder Sie sind sehr sehr erfahren, oder Sie sollten versuchen, eine Bibliothek, die das besser als Sie tun wird zu finden.
Ich kenne einige produktionsreife Implementierungen, die diese alternative Zeichenfolge verwenden.
Matte bereits den GString der GLib erwähnt.
Wenn Sie für Windows programmieren, können Sie mit Microsofts BSTR (und sein C++-Wrapper bstr_t ) könnten Ihr Problem lösen: Sie können wie ein const char *
Zeichenfolge, und sie verwenden SysAllocString und ihre Schwesterfunktionen, SysFreeString , usw..
Sie können sie für Produktionscode verwenden oder zu Lernzwecken von ihnen lernen.