Wann verwende ich die '#include <string>' am Anfang eines C++ - Programms?
Bin ich verwirrt über die Verwendung von #include <string>
am Beginn eines Programms. Zum Beispiel, im code unten, ich glaube nicht, verwenden #include <string>
aber die Funktion wird immer noch drucken Sie die Zeichenfolge "Johnny' s Lieblings Nummer ist", wenn es ausgeführt wird.
#include <iostream>
using namespace std;
void printVariable(int number){
cout << "Johnny's favorite number is" << number << endl
}
Jedoch in diesem code es enthält #include <string>
.
#include <iostream>
#include <string>
using namespace std;
class Var{
public:
void setName(string x){
name = x;
}
string getName(){
return name;
}
private:
string name;
};
int main(){
Var Classy;
Classy.setName("Johnny Bravo");
cout << Classy.getName() << endl;
return 0;
}
Kann ich nur verwenden #include <string>
wenn eine variable repräsentiert einen string?
verwenden Sie es, wenn Sie etwas brauchen aus, dass die header-Datei.
Es ist vom Typ array-28
Streng genommen ist ein "string" ist ein Allgemeines Konzept, das umgesetzt werden kann in viele verschiedene Möglichkeiten. Auf Ebene der Sprache C++ hat eine begrenzte Unterstützung für Zeichenfolgen, die per Konvention auf null enden. Das wird ergänzt durch die Bibliothek
"Johnny's favorite number is"
ist nicht ein std::string
. Es ist der Typ const char *
. Ein C-Stil-string, sagen wir.#include <something>
garantiert, dass Sie möglicherweise bestimmte Einrichtungen (oft von Typen und Funktionen). Wenn Sie es weglassen, und verwenden Sie diese Einrichtungen sowieso, es bauen darf oder nicht; es könnte sogar bauen aber seltsam Verhalten.Es ist vom Typ array-28
const char
.Streng genommen ist ein "string" ist ein Allgemeines Konzept, das umgesetzt werden kann in viele verschiedene Möglichkeiten. Auf Ebene der Sprache C++ hat eine begrenzte Unterstützung für Zeichenfolgen, die per Konvention auf null enden. Das wird ergänzt durch die Bibliothek
<cstring>
das vereinfacht das handling dieser Art von Zeichenfolge Umsetzung zu erleichtern. Die <string>
Bibliothek bietet tatsächlich eine andere Implementierung von strings. Sie müssen nur #include <string>
wenn Sie tatsächlich nutzen die Einrichtungen, die es bietet. String "Literale", das ist, was Sie verwenden, sind integraler Bestandteil der Sprache.
InformationsquelleAutor xai | 2014-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja.
Verwenden
#include <string>
wenn Sie eine variable verwenden, geben Siestd::string
.Den code
"text here"
, entgegen der intuition, nicht einestd::string
; es ist ein string-literal, und ein C-Stil-string, und einconst char[10]
Cabrio zuconst char*
. Herzlich willkommen bei C++ mit dem legacy Merkwürdigkeiten.InformationsquelleAutor Lightness Races in Orbit
In Ihrem ersten Fall ist die Bibliothek "string" ist nicht erforderlich. Das Objekt "cout" wird unterstützt durch die Bibliothek "iostream", so haben Sie:
Für den zweiten Fall, Sie haben explizit "string", also die Bibliothek "string" erforderlich ist:
InformationsquelleAutor Heng Li
Wenn Sie den Typ
std::string
im code dann sollten Sie auch die<string>
header. Es gibt auch ein paar andere Typen und Funktionen in diesem header, aberstd::string
ist die am häufigsten verwendete.Jedoch, Sie müssen nicht include diesen header nur die Verwendung von string-Literale, die in der core-Sprache.
InformationsquelleAutor Brian
Ihre Frage ergibt sich aus der Tatsache, dass Sie wissen, dass es so etwas wie
"aabcd"
ist ein string literal. So, Ihr Typ sein solltestring
. Gut, das ist nicht ganz richtig.C++ hat eine Menge Funktionen, von C. Einschließlich Datentypen. So, das ist ein Zeiger auf char (
char*
), nicht einstring
(eine Instanz derstring
Klasse). Sie erstellen eine Instanz desstring
Klassechar*
(darunter ein string-literal), indem Sie es als argument für den Konstruktor vonstring
. Aber es ist kein string, es ist nur eine irreführende Terminologie.Einem ähnlichen Fall ist der Aufruf Dinge Vektoren, wenn Sie arrays.
InformationsquelleAutor Paul92