Warum ich das nicht cout
string
mögen kann:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Wenn ich das mache, erhalte ich den folgenden Fehler:
Fehler 2 Fehler C2679: Binär '<<': Es wurde kein Operator gefunden, der einen rechten Operanden vom Typ 'std :: string' verwendet (oder es gibt keine akzeptable Konvertierung). C: \ users \ mollasadra \ documents \ visual studio 2008 \ projekte \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **
Es ist erstaunlich, dass auch das nicht funktioniert:
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;
#include <iostream>
?Antworten:
Sie müssen einschließen
quelle
using namespace std
oderusing std::cout
;using std::endl
;;string text;
auch bei der Bearbeitung keinen Fehler gibt (hinzugefügter Fehler), dass dies nicht das Problem ist, sondern der fehlendestring
Header.std::basic_string
Klasse ein (da sie indirekt den implementierungsdefinierten <xstring> -Header enthalten ( schließen Sie diesen niemals direkt ein )). Während dies Ihnen die Verwendung der Zeichenfolgenklasse ermöglicht, wird die relevanteoperator<<
im <string> -Header selbst definiert, sodass Sie diese manuell einfügen müssen. Verlassen Sie sich auch auf andere Header, um indirekt die Definition vonstd::basic_string
Werken in VC ++ einzuschließen, aber es funktioniert nicht auf allen Compilern.Sie müssen
std
irgendwie auf den Namespace des Couts verweisen . Zum Beispiel einfügenüber Ihrer Funktionsdefinition oder der Datei.
quelle
Es gibt verschiedene Probleme mit Ihrem Code:
WordList
ist nirgendwo definiert. Sie sollten es definieren, bevor Sie es verwenden.#include <string>
bevor Sie die Zeichenfolgenklasse und iostream verwenden können, bevor Siecout
oder verwendenendl
.string
,cout
Undendl
leben imstd
Namensraum, so dass man sie nicht ohne mit ihnen voran zugreifen können ,std::
wenn Sie verwenden , um dieusing
erste Richtlinie , um sie in Umfang bringen.quelle
Die obigen Antworten sind gut, aber wenn Sie kein String-Include hinzufügen möchten, können Sie Folgendes verwenden
quelle
Verwenden Sie c_str (), um den std :: string in const char * zu konvertieren.
quelle
Sie müssen nicht
std::cout
oderstd::endl
explizit referenzieren .Sie sind beide in der enthalten
namespace std
.using namespace std
Anstatt::
jedes Mal den Scope Resolution Operator zu verwenden, ist dies einfacher und sauberer.quelle
Wenn Sie ein Linux-System verwenden, müssen Sie hinzufügen
using namespace std;
Unter den Überschriften
Wenn Windows, dann stellen Sie sicher, dass Sie die Überschriften richtig setzen
#include<iostream.h>
#include<string.h>
Verweisen Sie darauf, es funktioniert perfekt.
quelle
using namespace std;
hat nichts mit dem Ziel zu tunlinux
. In ähnlicher Weise hat das Hinzufügen von.h
zu den Includes nichts mit dem Ziel- Betriebssystem Windows zu tun#include <iostream>
und#include <string>
funktioniert unter Windows.