Waarom ik niet kan cout
string
op deze manier:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Als ik dit doe, krijg ik de volgende foutmelding:
Fout 2 fout C2679: binair ‘<<‘ : geen operator gevonden die een rechter operand van het type ‘std::string’ nodig heeft (of er is geen acceptabele conversie) c:\users\mollasadra\documents\visual studio 2008\projects\barnamec\barnamec\barnamec.cpp 67 barnamec**
Het is verbazingwekkend dat zelfs dit niet werkt:
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;
Antwoord 1, autoriteit 100%
Je moet
. opnemen
#include <string>
#include <iostream>
Antwoord 2, autoriteit 4%
Je moet op de een of andere manier verwijzen naar de naamruimte std
van de cout. Voeg bijvoorbeeld
. in
using std::cout;
using std::endl;
bovenop uw functiedefinitie of het bestand.
Antwoord 3, autoriteit 2%
Er zijn verschillende problemen met uw code:
WordList
is nergens gedefinieerd. U moet het definiëren voordat u het gebruikt.- Je kunt niet zomaar code schrijven buiten een functie als deze. Je moet het in een functie plaatsen.
- Je moet
#include <string>
voordat je de string class en iostream kunt gebruiken voordat jecout
ofendl
gebruikt. string
,cout
enendl
leven in destd
naamruimte, dus je kunt ze niet openen zonder prefix ze metstd::
tenzij u de instructieusing
gebruikt om ze eerst in het bereik te brengen.
Antwoord 4
Bovenstaande antwoorden zijn goed, maar als u geen tekenreeks wilt toevoegen, kunt u het volgende gebruiken
ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();
return os;
}
Antwoord 5
Gebruik c_str() om de std::string te converteren naar const char *.
cout << "String is : " << text.c_str() << endl ;
Antwoord 6
Je hoeft niet expliciet naar std::cout
of std::endl
te verwijzen.
Ze zijn beide opgenomen in de using namespace std
. using namespace std
gebruiken in plaats van scope resolution operator ::
elke keer dat het makkelijker en schoner wordt.
#include<iostream>
#include<string>
using namespace std;
Antwoord 7
Als je een Linux-systeem gebruikt, moet je toevoegen
using namespace std;
Onder kopjes
Als Windows, zorg er dan voor dat je de headers correct plaatst
#include<iostream.h>
#include<string.h>
Zie dit, het werkt perfect.
#include <iostream>
#include <string>
int main ()
{
std::string str="We think in generalities, but we live in details.";
// (quoting Alfred N. Whitehead)
std::string str2 = str.substr (3,5); // "think"
std::size_t pos = str.find("live"); // position of "live" in str
std::string str3 = str.substr (pos);
// get from "live" to the end
std::cout << str2 << ' ' << str3 << '\n';
return 0;
}