Por que não posso cout
string
gostar disso:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Quando faço isso, recebo o seguinte erro:
Erro 2 erro C2679: binário '<<': nenhum operador encontrado que utiliza um operando à direita do tipo 'std :: string' (ou não há conversão aceitável) c: \ users \ mollasadra \ documents \ visual studio 2008 \ projetos \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **
É incrível que mesmo isso não esteja funcionando:
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;
#include <iostream>
?Respostas:
Você precisa incluir
fonte
using namespace std
ouusing std::cout
;using std::endl
;string text;
edição (erro adicionado), que este não é o problema, mas ostring
cabeçalho ausente .std::basic_string
classe (porque incluem indiretamente o cabeçalho <xstring> definido pela implementação ( nunca inclua isso diretamente )). Embora isso permita que você use a classe string, o relevanteoperator<<
é definido no próprio cabeçalho <string>, portanto você deve incluí-lo manualmente. Também depende de outros cabeçalhos para incluir indiretamente a definição destd::basic_string
obras no VC ++, mas não funcionará em todos os compiladores.Você precisa fazer referência ao namespace do cout de
std
alguma forma. Por exemplo, insirasobre sua definição de função ou o arquivo
fonte
Existem vários problemas com o seu código:
WordList
não está definido em nenhum lugar. Você deve defini-lo antes de usá-lo.#include <string>
antes de poder usar a classe string e o iostream antes de usarcout
ouendl
.string
,cout
Eendl
ao vivo nostd
espaço de nomes, então você não pode acessá-los sem prefixar-los comstd::
a menos que você use ausing
directiva para trazê-los para o escopo em primeiro lugar.fonte
As respostas acima são boas, mas se você não deseja adicionar string include, pode usar o seguinte
fonte
Use c_str () para converter o std :: string em const char *.
fonte
Você não precisa fazer referência
std::cout
oustd::endl
explicitamente.Ambos estão incluídos no
namespace std
.using namespace std
em vez de usar o operador de resolução de escopo::
sempre que for mais fácil e limpo.fonte
Se você estiver usando o sistema linux, precisará adicionar
using namespace std;
Abaixo dos cabeçalhos
Se o Windows, certifique-se de colocar os cabeçalhos corretamente
#include<iostream.h>
#include<string.h>
Consulte isso, ele funciona perfeitamente.
fonte
using namespace std;
não tem nada a ver com o objetivo do serlinux
. Da mesma forma, adicionar as.h
inclusões não tem nada a ver com o sistema operacional de destino como sendo o windows#include <iostream>
e#include <string>
funcionará no windows.