Cout и Cin бросают ошибки, несмотря на использование заголовков # include & lt; iostream & gt; [Дубликат]

Измените действие сборки на «Ресурс». Также неправильный URL-адрес вашего пакета. Либо используйте:

Source="pack://application:,,,/Resource/UserCost2013Open16.png"

, либо просто

Source="/Resource/UserCost2013Open16.png"
107
задан Kiril Kirov 23 March 2015 в 16:34
поделиться

6 ответов

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

#include <string>
#include <iostream>
195
ответ дан Kiril Kirov 22 August 2018 в 17:49
поделиться
  • 1
    а также using namespace std или using std::cout; using std::endl; – fardjad 12 June 2011 в 09:44
  • 2
    Да, но я предполагаю, что он включен, так как нет ошибки в string text;, также в edit (добавлена ​​ошибка) говорится, что это не проблема, а недостающий заголовок string. – Kiril Kirov 12 June 2011 в 09:46
  • 3
    +1: Многие заголовки STL в Visual C ++ (включая & lt; iostream & gt;) вытягивают определение класса std::basic_string (поскольку они косвенно включают в себя определенный в реализации заголовок & lt; xstring & gt; ( никогда не включают это непосредственно )). Хотя это позволяет вам использовать класс строк, соответствующий operator<< определяется в & lt; string & gt; заголовок, поэтому вы должны включить это вручную. Кроме того, полагаясь на другие заголовки, косвенное включение определения std::basic_string работает в VC ++, но оно не будет работать на всех компиляторах. – Sven 12 June 2011 в 09:59
  • 4
    Свен - Ваш комментарий потрясающий! У меня была аналогичная проблема, как этот вопросник, компилятор сказал operator & gt; & gt; не был определен для типов std :: cin и std :: string. Оказывается, у меня был & lt; iostream & gt; но забыл & lt; string & gt ;. Я привык работать с linux w / gcc, который бы пожаловался, что std :: string не определен. Ваш комментарий объясняет, почему мы вместо этого получили жалобу на оператора. Благодаря!! – Daniel Goldfarb 27 January 2013 в 19:09
  • 5
    Это работает. Я пропустил #include & lt; string & gt; строка в моем коде. Благодарю. – Hao Nguyen 30 October 2014 в 23:21

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

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

return os;
}
0
ответ дан Maheswar Reddy 22 August 2018 в 17:49
поделиться

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

#include<iostream>
#include<string>
using namespace std;
-1
ответ дан Masih Akbari 22 August 2018 в 17:49
поделиться
  • 1
    Добро пожаловать в StackOverflow, возможно, вы не заметили, но это было рассмотрено в одном из комментариев принятого ответа. – Andon M. Coleman 10 September 2013 в 01:58

Если вы используете 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;
}
-2
ответ дан pratikpchpr 22 August 2018 в 17:49
поделиться
  • 1
    using namespace std; не имеет никакого отношения к цели os, являющейся linux. Аналогично, добавление .h в include не имеет ничего общего с целевыми окнами, а #include <iostream> и #include <string> будут работать в окнах. – StaticBeagle 26 May 2017 в 02:10

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

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

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

9
ответ дан progo 22 August 2018 в 17:49
поделиться

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

  1. WordList нигде не определен. Вы должны определить его, прежде чем использовать его.
  2. Вы не можете просто написать код вне функции, подобной этой. Вы должны поместить его в функцию.
  3. Прежде чем использовать класс строк и iostream, вы должны #include <string>, прежде чем использовать cout или endl.
  4. string, cout и endl живут в пространстве имен std, поэтому вы не можете получить к ним доступ без предварительного префикса std::, если вы не используете директиву using, чтобы перенести их в область видимости.
6
ответ дан sepp2k 22 August 2018 в 17:49
поделиться
  • 1
    никто из них не работал для меня, кажется, что проблема связана с substr – Ata 12 June 2011 в 09:48
Другие вопросы по тегам:

Похожие вопросы: