strcat
wäre schneller, weil sprintf
zuerst die Zeichenfolge nach Formatvariablen durchsuchen muss.
Aber der wahre Gewinn ist die Tatsache, dass jeder weiß, was strcat
macht - Verkettung von Strings. Die Verwendung von sprintf
für die Verkettung ist keine Standardverwendung. Und es würde dazu führen, dass die Leute einen Doppelklick machen.
Angesichts der Wahl zwischen den beiden würde ich strcat
; es ist sicherlich lesbarer und macht deine Absichten deutlich. Es könnte auch etwas schneller sein als sprintf
, aber wahrscheinlich nicht viel.
Aber unabhängig davon, welche Methode Sie wählen, sollten Sie unbedingt snprintf
oder strncpy
für den Pufferüberlaufschutz verwenden.
Sie haben diese Frage sowohl als c
als auch als c++
getaggt; Wenn Sie C ++ verwenden, wäre es viel besser, stattdessen ein std::string
zu verwenden.
Wenn es einen Unterschied gibt, variiert dieser Unterschied entsprechend den Compiler-Flags, der Computerbenutzung zum Zeitpunkt der Codeausführung, der Bibliotheksimplementierung, ..., ...
Für Ihren speziellen Fall messen .
Führen Sie beide Schnipsel einige Milliarden Mal aus und geben Sie ihnen Zeit.
Ich bezweifle sehr, dass Sie einen signifikanten Unterschied finden werden.
Ich mag strcat()
besser: es vermittelt deutlich die Bedeutung des Codes.
Ich stimme anderen zu: strcat()
sollte schneller sein. Aber für "Best-Practice", wenn Sie wirklich auf Geschwindigkeit achten, sollten Sie keines von beiden verwenden. Du solltest eine Struktur wie:
, um das Ende der Zeichenfolge zu verfolgen. Wenn Sie eine Zeichenfolge anhängen, springen Sie einfach zum Ende und kopieren Sie sie. Double max
, wenn der zugewiesene Speicher nicht groß genug ist. Alternativ können Sie etwas Phantasie haben, indem Sie len
, max
und str
zusammenpacken.
strcat
ist in diesem Fall viel schneller. Denken Sie daran, dass sprintf()
die Formatzeichenfolge Zeichen für Zeichen nach% Escapes durchsucht. Vergleichen Sie dies mit:
zum Beispiel.
Tags und Links c coding-style