Gibt es eine strtol-Entsprechung, die keine nullterminierte Zeichenfolge erfordert?

8

Gibt es eine Standard-C-Funktion ähnlich wie strtol, die ein char * und eine Länge für eine nicht-null-terminierte Zeichenkette benötigt?

Ich weiß, dass ich die Zeichenfolge in eine nullterminierte Region kopieren konnte, aber aus Effizienzgründen ist das unerwünscht.

Danke.

    
kdt 06.07.2009, 08:33
quelle

4 Antworten

4

Keine solche Funktion in der Standardbibliothek. Sie müssen entweder die temporäre Puffermethode verwenden oder eine eigene Funktion von Grund auf neu schreiben.

    
anon 06.07.2009, 08:42
quelle
2

Um Ihre Frage zu beantworten: Nein, es gibt keine Standardfunktion, aber es ist einfach genug, um Ihre eigenen zu schreiben:

%Vor%     
Wernsey 06.07.2009 08:48
quelle
1

strntol ist wahrscheinlich das, wonach Sie suchen ... es ist jedoch kein Standard-C.

>     
Stobor 06.07.2009 08:42
quelle
1

Wenn Sie das auf Effizienz drücken, können Sie wahrscheinlich die Zeit zum Schreiben und Debuggen Ihrer eigenen Zeit motivieren.

Aber: mach es einfach mit einer Kopie; Sie haben wahrscheinlich eine Obergrenze für die Länge der Zeichenfolge (eine Dezimalzahl, die in long passt, hat eine strenge Obergrenze für die maximale Länge), sodass Sie einen statischen Puffer haben können. Dann profilieren Sie Ihre gesamte Anwendung und sehen Sie, ob das Kopieren / Konvertieren wirklich ein Flaschenhals ist. Wenn es wirklich ist, dann weißt du, dass du deine eigenen schreiben musst.

Hier ist ein grober (ungetesteter, browsergeschriebener) Startpunkt:

%Vor%     
unwind 06.07.2009 08:48
quelle

Tags und Links