Идентификатор cout не определен visual studio

Обновлено: 07.07.2024

Что касается ошибок, обычно компилятор C ++ дает вам содержательное описание ошибки при первом обнаружении, но после этого все может стать странным, поэтому вы исправляете их по одному, чтобы начать получать некоторую ясность.

необходимо указать std:: пространство имен:

кроме того, вы можете использовать

cout в пространстве имен std, вы должны использовать std::cout в коде.И вы не должны добавлять using namespace std; в файле заголовка плохо смешивать код с пространством имен std, особенно не добавляйте его в файл заголовка.

using namespace std;

Идентификатор не объявлен

Если идентификатор является переменной или именем функции, его необходимо объявить перед тем, как его можно будет использовать. Перед использованием функции в объявлении функции также должны быть включены типы его параметров. Если переменная объявлена с помощью auto , компилятор должен иметь возможность определить тип из его инициализатора.

Если идентификатор является членом класса или структуры или объявлен в пространстве имен, он должен уточняться именем класса или структуры или именем пространства имен при использовании вне структуры, класса или области пространства имен. Кроме того, пространство имен должно быть помещено в область с помощью using директивы, такой как using namespace std; , или имя члена должно быть помещено в область с помощью using объявления, такого как using std::string; . В противном случае неполное имя считается необъявленным идентификатором в текущей области.

Если идентификатор является псевдонимом типа, тип должен быть объявлен с помощью using объявления или typedef перед тем, как его можно будет использовать. Например, необходимо объявить, using my_flags = std::ios_base::fmtflags; прежде чем можно будет использовать my_flags в качестве псевдонима типа для std::ios_base::fmtflags .

std::cout

Библиотека iostream содержит несколько предопределенных переменных, которые мы можем использовать. Одной из наиболее полезных является std::cout, которая позволяет нам отправлять данные в консоль для печати в виде текста. cout означает «character output» (вывод символов).

Вспомним нашу программу Hello world:

В эту программу мы включили iostream, чтобы у нас был доступ к std::cout. Внутри нашей функции main() мы используем std::cout вместе с оператором вставки (<<) для отправки текста «Hello world!» в консоль для печати.

std::cout может печатать не только текст, но и числа:

Это дает результат:

Его также можно использовать для вывода значений переменных:

Это дает результат:

Чтобы напечатать несколько элементов в одной строке, для объединения (связывания) нескольких частей выводимых данных, оператор вставки (<<) можно использовать несколько раз в одном выражении. Например:

Эта программа печатает:

Вот еще один пример, в котором мы печатаем и текст, и значение переменной в одном выражении:

Эта программа печатает:

x is equal to: 5

Другие решения

Других решений пока нет …

Ввод информации

cin >> идентификатор;

При этом из входного потока читается последовательность символов до пробела, затем эта последовательность преобразуется к типу идентификатора, и получаемое значение помещается в идентификатор:

Возможно многократное назначение потоков:

cin >> переменная1 >> переменная2 >>…>> переменнаяn;

При наборе данных на клавиатуре значения для такого оператора должны быть разделены символами (пробел,

Особого внимания заслуживает ввод символьных строк. По умолчанию потоковый ввод

вводит строку до пробела, символа табуляции или перевода строки.

Для ввода текста до символа перевода строки используется манипулятор потока

C++ / CppiostreamLearnCppstd::cinstd::coutДля начинающихОбучениеПрограммирование

Пример: сбой выведения типа C++/CLI

Эта ошибка может возникать при вызове универсальной функции, если аргумент предполагаемого типа не может быть выведен из используемых параметров. Дополнительные сведения см. в разделе универсальные функции (C++/CLI).

Использовать до объявления

Компилятору не удается найти объявление идентификатора. Эта ошибка имеет несколько возможных причин. Наиболее распространенными причинами C2065 является то, что идентификатор не был объявлен, идентификатор написан неправильно, заголовок, где объявляется идентификатор, не включается в файл, или в идентификаторе отсутствует квалификатор области, например, cout вместо std::cout . Дополнительные сведения об объявлениях в C++ см. в разделе объявления и определения (c++).

Ниже приведены некоторые распространенные проблемы и более подробные решения.

Идентификатор не объявлен

Если идентификатор является переменной или именем функции, его необходимо объявить перед тем, как его можно будет использовать. Перед использованием функции в объявлении функции также должны быть включены типы его параметров. Если переменная объявлена с помощью auto , компилятор должен иметь возможность определить тип из его инициализатора.

Если идентификатор является членом класса или структуры или объявлен в пространстве имен, он должен уточняться именем класса или структуры или именем пространства имен при использовании вне структуры, класса или области пространства имен. Кроме того, пространство имен должно быть помещено в область с помощью using директивы, такой как using namespace std; , или имя члена должно быть помещено в область с помощью using объявления, такого как using std::string; . В противном случае неполное имя считается необъявленным идентификатором в текущей области.

Если идентификатор является тегом для определяемого пользователем типа, например, class или struct , тип тега должен быть объявлен до его использования. Например, объявление struct SomeStruct < /*. */ >; должно существовать, прежде чем можно будет объявить переменную SomeStruct myStruct; в коде.

Если идентификатор является псевдонимом типа, тип должен быть объявлен с помощью using объявления или typedef перед тем, как его можно будет использовать. Например, необходимо объявить, using my_flags = std::ios_base::fmtflags; прежде чем можно будет использовать my_flags в качестве псевдонима типа для std::ios_base::fmtflags .

Пример: идентификатор с ошибками

Эта ошибка обычно возникает, когда имя идентификатора написано неправильно или идентификатор использует неправильные прописные и строчные буквы. Имя в объявлении должно точно совпадать с именем, которое вы используете.

Пример. Использование неограниченного идентификатора

Эта ошибка может возникать, если идентификатор не является правильно заданной областью. Если вы видите C2065 при использовании cout , это является причиной. Если функции и операторы стандартной библиотеки C++ не полностью определены в пространстве имен или вы не передали std пространство имен в текущую область с помощью using директивы, компилятор не сможет их найти. Чтобы устранить эту проблему, необходимо либо полностью определить имена идентификаторов, либо указать пространство имен с помощью using директивы.

Этот пример не компилируется cout , поскольку и endl определены в std пространстве имен:

Идентификаторы, объявляемые внутри class типов, struct или, enum class также должны уточняться именем их включающей области при их использовании за пределами этой области.

Пример: предварительно скомпилированный заголовок не является первым

Этот пример не компилируется cout , поскольку и endl определены в <iostream> заголовке, который игнорируется, поскольку он включается перед предкомпилированным файлом заголовка. Чтобы выполнить сборку этого примера, создайте все три файла, а затем скомпилируйте файл stdafx. cpp, а затем скомпилируйте C2065_pch. cpp.

Пример: отсутствует заголовочный файл

Вы не включили заголовочный файл, объявляющий идентификатор. Убедитесь, что файл, содержащий объявление идентификатора, включен в каждый исходный файл, который его использует.

Другая возможная причина заключается в том, что при использовании списка инициализаторов не включается <initializer_list> заголовок.

эта ошибка может возникать в исходных файлах Windows классических приложений, если вы определяете VC_EXTRALEAN , WIN32_LEAN_AND_MEAN или WIN32_EXTRA_LEAN . Эти макросы препроцессора исключают некоторые файлы заголовков из Windows. h и афксв _ W32. h для ускорения компиляции. Просмотрите Windows. h и afxv_w32. h, чтобы получить последние сведения о том, что исключено.

Пример: отсутствует закрывающая кавычка

Эта ошибка может возникать, если отсутствует закрывающая кавычка после строковой константы. Это простой способ запутывания компилятора. Обратите внимание, что пропущенная закрывающая кавычка может быть в нескольких строках перед сообщаемым расположением ошибки.

Пример. Использование итератора вне области действия цикла

Эта ошибка может возникать, если объявить переменную-итератор в for цикле, а затем попробовать использовать эту переменную итератора вне области for цикла. Компилятор включает параметр компилятора /Zc: forScope по умолчанию. Дополнительные сведения см. в разделе Поддержка итераторов отладки .

Пример: объявление удаленного препроцессора

Эта ошибка может возникать, если вы ссылаетесь на функцию или переменную, которая находится в коде, скомпилированном по условию, который не компилируется для текущей конфигурации. Это также может произойти при вызове функции в файле заголовка, который в настоящее время не поддерживается в среде сборки. Если определенные переменные или функции доступны только при определении конкретного макроса препроцессора, убедитесь, что код, вызывающий эти функции, может быть скомпилирован только при определении одного и того же макроса препроцессора. Эту ошибку легко выявить в интегрированной среде разработки, так как объявление функции недоступно, если требуемые макросы препроцессора не определены для текущей конфигурации сборки.

Это пример кода, который работает при сборке в отладке, но не в розницу:

Пример: сбой выведения типа C++/CLI

Эта ошибка может возникать при вызове универсальной функции, если аргумент предполагаемого типа не может быть выведен из используемых параметров. Дополнительные сведения см. в разделе универсальные функции (C++/CLI).

Пример: параметры атрибута C++/CLI

эта ошибка также может быть вызвана работой по согласованности компилятора, выполненной для Visual Studio 2005: проверка параметров для Visual C++ных атрибутов.

Я работаю над частью "драйвера" моего назначения программирования, и я продолжаю получать эту абсурдную ошибку:

ошибка C2065: 'cout': необъявленный идентификатор

Я даже пытался использовать std:: cout, но я получаю еще одну ошибку, которая говорит: IntelliSense: пространство имен "std" не имеет члена "cout" , когда у меня есть объявленный с использованием пространства имен std, включая iostream +, я даже пытался использовать ostream

Я знаю, что это стандартный вопрос о нобе, но это меня насторожило, и я новичок (это означает: я запрограммировал раньше. )

Я использую Visual Studio 2010 и запускаю Windows 7. Все файлы .h имеют "использование пространства имен std" и включают iostream и ostream.

ОТВЕТЫ

Ответ 1

Это не будет работать.

Ответ 2

напишите этот код, он отлично работает.

Ответ 3

Ответ 4

include "stdafx.h" в порядке

Но вы не можете использовать cout , если вы не включили using namespace std

Если вы не включили пространство имен std, вам нужно написать std::cout вместо простого cout

Ответ 5

Я видел, что если вы используете

тогда вы получите эту проблему.

Если вы используете

(уведомление - без .h)

то вы не получите проблему, о которой вы упомянули.

Ответ 6

Ответ 7

Нижеприведенный код компилируется и запускается правильно для меня, используя gcc. Попробуйте скопировать/вставить это и посмотреть, работает ли он.

Ответ 8

Если единственным файлом, который вы включаете, является iostream, и он все еще говорит undefined, то, возможно, iostream не содержит того, что он должен был. Возможно ли, что у вас есть пустой файл, совпадающий по имени "iostream" в вашем проекте?

Ответ 9

Я видел похожие вещи, когда я использовал расширение .c файла с кодом С++. Кроме этого, я должен согласиться со всеми о багги установке. Это работает, если вы попытаетесь скомпилировать проект с более ранней версией VS? Попробуйте VС++ Express 2008. Его бесплатно на msdn.

Ответ 10

Такое глупое решение в моем случае:

Выше было указано в качестве примера a, когда я изменил его, чтобы он был похож на пример b ниже.

Мой код составлен как шарм. Попробуйте, гарантированно сработает.

Ответ 11

прежде чем вы начнете эту программу, избавитесь от всего кода и сделайте простой мир привет внутри основного. Включать только iostream и использовать пространство имен std;. Постепенно добавьте его, чтобы найти свою проблему.

Ответ 12

У меня есть VS2010, Beta 1 и Beta 2 (один на моей рабочей машине и один на дому), и я использовал std множество без проблем. Попробуйте ввести:

И посмотрите, дает ли Intellisense что-нибудь. Если это дает вам обычный материал ( abort , abs , acos и т.д.), За исключением cout , ну тогда это довольно головоломка. Определенно посмотрите на ваши заголовки С++ в этом случае.

Помимо этого, я бы просто добавил, чтобы убедиться, что вы используете обычный пустой проект (не CLR, где Intellisense поврежден), и что вы на самом деле пытались построить проект хотя бы один раз. Как я уже упоминал в комментарии, VS2010 анализирует файлы после добавления include ; возможно, что что-то застряло в парсере, и он не сразу "нашел" cout . (В этом случае попробуйте перезапустить VS, возможно?)

Ответ 13

У меня была такая же проблема при запуске проекта ms С++ 2010 с нуля - я удалил все файлы заголовков, сгенерированные с помощью ms, но использовал:

Мне пришлось включить stdafx.h , поскольку это вызвало ошибку, в которой он не был.

Ответ 14

из вашего .cpp файла, создайте файл заголовка и поместите его в файл .h. Затем добавьте

в верхней части вашего .cpp-кода. Затем запустите его снова.

Ответ 15

Вы уверены, что он компилируется как С++? Проверьте имя файла (он должен заканчиваться на .cpp ). Проверьте настройки проекта.

Нет ничего плохого в вашей программе, а cout находится в namespace std . Ваша установка VS 2010 Beta 2 является дефектной, и я не думаю, что это просто ваша установка.

Я не думаю, что VS 2010 готов к С++. Стандартная программа "Hello, World" не работала на бета-версии 1. Я просто попытался создать тестовое консольное приложение Win32, а сгенерированный файл test.cpp не имел функции main() .

У меня действительно очень плохое чувство о VS 2010.

Ответ 16

Попробуй, это сработает. Я проверил его в Windows XP, Visual Studio 2010 Express.

Ответ 17

Ответ 18

В Visual Studio используйте весь ваш фильтр заголовка ниже "stdafx.h".

Ответ 19

Включите библиотеку std, вставив следующую строку вверху вашего кода:

Ответ 20

обычно сохраняется в папке C:\Program Files\Microsoft Visual Studio 8\VC\include. Сначала проверьте, все ли он там. Затем выберите "Инструменты + варианты", "Проекты и решения", "Каталоги VС++", выберите "Включить файлы" в поле "Показать каталоги для" и дважды проверьте, что включение (VCInstallDir) включено в список.

Ответ 21

Я столкнулся с этой ошибкой после того, как установил vs 2010 и просто пытался получить почти идентичную программу для работы.

Я уже делал кодировку ваниль C в коробках в стиле unix, решил, что немного поиграю с этим.

Первая программа, которую я пробовал, была:

Большая вещь, чтобы заметить здесь. если вы все сделали C-кодирование,

Выглядит странно. это должно быть:

В моем случае я просто изменил программу на:

И он отлично работал.

Примечание. Используйте CTRL + F5, чтобы окно консоли закрывалось, чтобы вы могли видеть результаты.

Ответ 22

Просто используйте printf !

Включите stdio.h в заголовочный файл stdafx.h для printf .

Ответ 23

Ответ 24

Это был компилятор - теперь я использую Eclipse Galileo, и программа работает как чудо

Я работаю над частью 'driver' моего задания по программированию и постоянно получаю эту абсурдную ошибку:

ошибка C2065: 'cout': необъявленный идентификатор

Я даже пытался использовать std::cout , но я получаю еще одну ошибку, которая говорит: IntelliSense: пространство имен "std" не имеет члена "cout", когда я объявил использование пространства имен std, включил iostream + я даже пытался использовать ostream

Я знаю, что это стандартный вопрос нуба, но это поставило меня в тупик, и я Новичок (имеется в виду: я программировал раньше. )

Я использую Visual Studio 2010 и запускаю Windows 7. Все файлы .h имеют "using namespace std" и включают iostream и ostream.

Я хочу создать программу, которая берет случайную величину, а затем выплевывает ее на экран (формат windows, а не консоль.) Но когда я помещаю переменную в код, это происходит : ошибка C2065: 'Lcurrent': необъявленный идентификатор Когда я меняю переменную на Lcurrent, она говорит : error C2065.

У меня есть проблема c2965, которую мне нужно решить. Я новичок в c++, и когда я пытаюсь скомпилировать свой скрипт, я получаю следующую ошибку. ошибка c2065: 'long64': необъявленный идентификатор на линии long64 *x, *y; Я не уверен, что вызвало это, и кажется, что это относительно необычная.

Это не сработает.

напишите этот код, он отлично работает..

Код правильно компилируется на платформе Win32, но приводит к следующей ошибке на WinCe. \armv4i\stdlib.h(146): ошибка C2065: '_malloca' : необъявленный идентификатор в строке 146 в файле stdlib компилятор жалуется на _malloca линия 146: _CRT_BANNED_DEPRECATE(_malloca и _freea) __checkReturn.

include "stdafx.h" в порядке

Но вы не можете использовать cout , если не включили using namespace std

Если вы не включили пространство имен std, вам нужно написать std::cout вместо простого cout

Я видел, что если вы используете

тогда вы получите проблему.

Если вы используете

(обратите внимание-без. h)

тогда вы не получите ту проблему, о которой говорили.

Я видел, как подобные вещи случались, когда я использовал расширение файла .c с кодом C++. Кроме того, я должен был бы согласиться со всеми насчет установки багги. Работает ли это, если вы попытаетесь скомпилировать проект с более ранним выпуском VS? Попробуйте VC++ Express 2008. Он свободен на msdn.

Приведенный ниже код компилируется и работает правильно для меня, используя gcc. Попробуйте скопировать / вставить это и посмотреть, работает ли это.

Если единственный файл, который вы включаете, - это iostream, и он все еще говорит undefined, то, возможно, iostream не содержит того, что должен. Возможно ли, что в вашем проекте есть пустой файл с совпадающим именем "iostream"?

Такое глупое решение в моем случае:

Вышеизложенное было одернуто в соответствии с примером а, когда я изменил его, чтобы он напоминал пример б ниже.

Мой код компилировался как заклинание. Попробуйте, гарантированно сработает.

У меня была такая же проблема при запуске проекта ms c++ 2010 с нуля - я удалил все заголовочные файлы, сгенерированные ms и но использованные:

Я должен был включить stdafx.h , так как это вызвало ошибку, не имея его.

из вашего файла .cpp создайте файл заголовка и поместите его в файл .h. Затем добавьте

в верхней части вашего кода .cpp. Затем запустите его снова.

прежде чем начать эту программу, избавьтесь от всего кода и сделайте простой hello world внутри main. Включать только iostream и использовать пространство имен std;. Мало-помалу добавляйте к нему, чтобы найти свою проблему.

У меня есть VS2010, Beta 1 и Beta 2 (один на моей рабочей машине и один дома), и я использовал std много без проблем. Попробуйте набрать:

И посмотрите, даст ли вам что-нибудь Intellisense. Если он дает вам обычные вещи ( abort , abs , acos и т. д.), За исключением cout , что ж, это довольно загадочно. В этом случае обязательно загляните в свои заголовки C++.

Кроме того, я бы просто добавил, чтобы убедиться, что вы запускаете обычный пустой проект (а не CLR, где Intellisense искалечен), и что вы действительно пытались построить проект хотя бы один раз. Как я уже упоминал в комментарии, VS2010 анализирует файлы после того, как вы добавили include ; возможно, что-то застряло в парсере, и он не сделал "find" cout сразу. (В таком случае попробуйте перезапустить VS, может быть?)

Попробуйте, это сработает. Я проверил его в Windows XP, Visual Studio 2010 Экспресс.

Вы уверены, что он компилируется как C++? Проверьте имя вашего файла (оно должно заканчиваться на .cpp ). проверьте настройки вашего проекта.

В вашей программе просто нет ничего плохого, и cout находится в namespace std . Ваша установка VS 2010 Beta 2 неисправна, и я не думаю, что это просто ваша установка.

Я не думаю, что VS 2010 еще готов к C++. Стандартная программа "Hello, World" не работала на бета-версии 1. Я только что попытался создать тестовое консольное приложение Win32, и сгенерированный файл test.cpp не имел функции main() .

У меня очень, очень плохое предчувствие насчет VS 2010.

При создании проекта вы неправильно установили параметр "использовать предварительно скомпилированные заголовки". Измените его в заголовках properties->C/C++->precompiled.

В Visual studio используйте все ваши заголовочные файлы ниже "stdafx.h".

Включите библиотеку std, вставив следующую строку в верхнюю часть кода:

обычно хранится в папке C:\Program Files\Microsoft Visual Studio 8\VC\include. Сначала проверьте, есть ли он еще. Затем выберите Инструменты + Параметры, проекты и решения, каталоги VC++, выберите "Include files" в списке "Show Directories for" combobox и дважды проверьте, что $(VCInstallDir)include находится в верхней части списка.

Я столкнулся с этой ошибкой после того, как только установил vs 2010 и просто попытался заставить работать почти идентичную программу.

Я уже делал кодирование vanilla C на коробках в стиле unix и решил немного поиграть с этим сам.

Первая программа, которую я попробовал, была:

Самое важное, что нужно заметить здесь. Если вы EVER сделали какое-либо C кодирование,

Выглядит странно. так и должно быть:

В моем случае я просто изменил программу на:

И это прекрасно сработало.

Примечание: используйте CTRL + F5, чтобы окно консоли оставалось рядом и вы могли видеть результаты.

Просто используйте printf !

Включите stdio.h в свой заголовочный файл stdafx.h для printf .

В VS2017 stdafx.h , по-видимому, заменяется на pch.h см. Эту статью ,

так что используйте:

Это был компилятор - теперь я использую Eclipse Galileo, и программа работает как чудо

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

При попытке создать меню до SubMenu с помощью InsertMenuItem: MENUITEMINFO mii = < sizeof(MENUITEMINFO) >; mii.fMask = MIIM_SUBMENU | MIIM_STRING | MIIM_ID; mii.wID = uCmdID++; mii.hSubMenu =.

Я хочу создать программу, которая берет случайную величину, а затем выплевывает ее на экран (формат windows, а не консоль.) Но когда я помещаю переменную в код, это происходит : ошибка C2065.

У меня есть проблема c2965, которую мне нужно решить. Я новичок в c++, и когда я пытаюсь скомпилировать свой скрипт, я получаю следующую ошибку. ошибка c2065: 'long64': необъявленный идентификатор.

Код правильно компилируется на платформе Win32, но приводит к следующей ошибке на WinCe. \armv4i\stdlib.h(146): ошибка C2065: '_malloca' : необъявленный идентификатор в строке 146 в файле stdlib.

Может ли кто-нибудь объяснить, почему мой код неверен? Это дает ошибку: ошибка C2065: 'i': необъявленный идентификатор void CDeathMatch::RemoveViewer( CUser* pUser ) < if( IsValidObj( pUser ) )

Я использую Qt creator 5.10 в windows 7. Когда я строю свой проект возникает ошибка: ошибка: C2065: 'QTcpSocket' : необъявленный идентификатор ошибка: C2065: 'QTcpclient' : необъявленный.

Работая с Git и только что вытащил изменения коллеги, которые привели к сбою моей локальной сборки с ошибками, поступающими из комплектов windows. Решение строится на сервере сборки и машине.

Читайте также: