Почему я не могу отключить строку?

Почему я не могу 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\projects\barnamec\barnamec\barnamec.cpp 67 barnamec **

Удивительно, что даже это не работает:

string text ;
text = "hello"  ;
cout << "String is  : " << text << endl ;

Ответ 1

Вам нужно включить

#include <string>
#include <iostream>

Ответ 2

Вам нужно как-то ссылаться на пространство имен cout std. Например, вставьте

using std::cout;
using std::endl;

поверх определения вашей функции или файла.

Ответ 3

В вашем коде есть несколько проблем:

  • WordList не определен нигде. Вы должны определить его, прежде чем использовать его.
  • Вы не можете просто написать код вне функции вроде этого. Вам нужно включить функцию.
  • Вам нужно #include <string>, прежде чем использовать класс строк и iostream, прежде чем использовать cout или endl.
  • string, cout и endl живут в пространстве имен std, поэтому вы не можете получить к ним доступ без префикса с помощью std::, если вы не используете директиву using, чтобы сначала перенести их в область.

Ответ 4

Выше ответы хорошие, но если вы не хотите добавлять строку include, вы можете использовать следующие

ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();

return os;
}

Ответ 5

Вам не нужно явно указывать std::cout или std::endl.
Они оба включены в namespace std. using namespace std вместо использования оператора разрешения области :: каждый раз сделать проще и чище.

#include<iostream>
#include<string>
using namespace std;

Ответ 6

Если вы используете Linux-систему, вам нужно добавить

using namespace std;

Ниже заголовков

Если окна, то убедитесь, что вы правильно помещаете заголовки #include<iostream.h>

#include<string.h>

Обратитесь к этому, чтобы он работал отлично.

#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;
}