Почему мне не cout
string
нравится это:
string text ;
text = WordList[i].substr(0,20) ;
cout << "String is : " << text << endl ;
Когда я делаю это, я получаю следующую ошибку:
Ошибка 2 ошибка C2679: двоичный файл «<<»: не найден оператор, который принимает правый операнд типа «std :: string» (или нет допустимого преобразования) c: \ users \ mollasadra \ documents \ visual studio 2008 \ проекты \ barnamec \ barnamec \ barnamec.cpp 67 barnamec **
Удивительно, что даже это не работает
string text ;
text = "hello" ;
cout << "String is : " << text << endl ;
#include <iostream>
?Ответы:
Вы должны включить
источник
using namespace std
илиusing std::cout
;using std::endl
;string text;
как редактирование (добавленная ошибка) говорит, что это не проблема, а отсутствующийstring
заголовок.std::basic_string
класса (поскольку они косвенно включают в себя определенный в реализации заголовок <xstring> ( никогда не включайте его напрямую )). Хотя это позволяет вам использовать строковый класс, соответствующийoperator<<
объект определен в самом заголовке <string>, поэтому вы должны включить его вручную. Также полагаться на другие заголовки, чтобы косвенно включить определениеstd::basic_string
работ в VC ++, но это не будет работать на всех компиляторах.Вам нужно как-то ссылаться на пространство имен
std
Cout. Например, вставитьповерх вашего определения функции или файла.
источник
Есть несколько проблем с вашим кодом:
WordList
нигде не определено. Вы должны определить это, прежде чем использовать его.#include <string>
прежде чем вы сможете использовать строковый класс и iostream перед тем, как использоватьcout
илиendl
.string
,cout
Иendl
жить вstd
пространстве имен, так что вы не можете получить доступ к ним без префиксов их ,std::
если вы не используетеusing
директиву , чтобы привести их в рамки первой.источник
Приведенные выше ответы хороши, но если вы не хотите добавлять строку include, вы можете использовать следующие
источник
Используйте c_str () для преобразования std :: string в const char *.
источник
Вы не должны ссылаться
std::cout
илиstd::endl
явно.Они оба включены в
namespace std
.using namespace std
Вместо использования оператора разрешения области видимости::
каждый раз становится проще и чище.источник
Если вы используете систему Linux, то вам нужно добавить
using namespace std;
Ниже заголовков
Если окна, то убедитесь, что вы правильно поставили заголовки
#include<iostream.h>
#include<string.h>
Отослать это отлично работает.
источник
using namespace std;
не имеет ничего общего с цельюlinux
. Точно так же, добавление.h
к include не имеет ничего общего с целевой ОС Windows,#include <iostream>
и#include <string>
будет работать с окнами.