Wie kann ein std: string-Parameter NULL sein?

8

Ich habe eine Funktion foo(const std::string& str); , dass es abstürzt, wenn Sie es mit foo(NULL) aufrufen.

Was kann ich tun, um einen Absturz zu verhindern?

    
bogdan 30.07.2011, 16:00
quelle

3 Antworten

11

std :: string hat einen Konstruktor, der einen const char * -Parameter akzeptiert. Der Konstruktor wird abstürzen, wenn Sie NULL übergeben, und dieser Konstruktor wird implizit aufgerufen, wenn Sie foo (NULL) schreiben.

Die einzige Lösung, die ich mir vorstellen kann, ist foo

zu überlasten %Vor%     
jahhaj 30.07.2011, 16:07
quelle
7

Sie könnten Boost.Optional verwenden.

%Vor%

Um es mit einer Zeichenfolge aufzurufen:

%Vor%

und ohne eine Zeichenfolge:

%Vor%

Boost.Optional bietet Ihnen eine typsichere Möglichkeit, Nullwerte zu haben, ohne auf Zeiger und die damit verbundenen Probleme zurückgreifen zu müssen.

    
Ferruccio 30.07.2011 16:53
quelle
1

Sie haben eine Funktion, die eine std::string akzeptiert, also stellen Sie ihr eine std::string und keinen Zeiger zur Verfügung.

%Vor%

Dies wird die Funktion mit einer leeren Zeichenkette versehen, was wahrscheinlich auch Ihren Nullwert interpretiert hätte.

    
Dennis Zickefoose 30.07.2011 16:55
quelle

Tags und Links