Как подключить iostream в visual studio

Обновлено: 07.07.2024

Declares objects that control reading from and writing to the standard streams. This include is often the only header you need to do input and output from a C++ program.

Syntax

Remarks

The objects fall into two groups:

cin , cout , cerr , and clog are byte oriented, doing conventional byte-at-a-time transfers.

wcin , wcout , wcerr , and wclog are wide oriented, translating to and from the wide characters that the program manipulates internally.

Once you do certain operations on a stream, such as the standard input, you can't do operations of a different orientation on the same stream. Therefore, a program can't operate interchangeably on both cin and wcin , for example.

All the objects declared in this header share a peculiar property — you can assume they're constructed before any static objects you define, in a translation unit that includes <iostream> . Equally, you can assume that these objects aren't destroyed before the destructors for any such static objects you define. (The output streams are, however, flushed during program termination.) Therefore, you can safely read from or write to the standard streams before program startup and after program termination.

This guarantee isn't universal, however. A static constructor may call a function in another translation unit. The called function can't assume that the objects declared in this header have been constructed, given the uncertain order in which translation units participate in static construction. To use these objects in such a context, you must first construct an object of class ios_base::Init .

Global Stream Objects

Name Description
cerr Specifies the cerr global stream.
cin Specifies the cin global stream.
clog Specifies the clog global stream.
cout Specifies the cout global stream.
wcerr Specifies the wcerr global stream.
wcin Specifies the wcin global stream.
wclog Specifies the wclog global stream.
wcout Specifies the wcout global stream.

The object cerr controls output to a stream buffer associated with the object stderr , declared in <cstdio> .

Return Value

Remarks

The object controls unbuffered insertions to the standard error output as a byte stream. Once the object is constructed, the expression cerr.flags & unitbuf is nonzero, and cerr.tie() == &cout . For more details, see cerr.flags and unitbuf .

Example

Specifies the cin global stream.

Return Value

Remarks

The object controls extractions from the standard input as a byte stream. Once the object is constructed, the call cin.tie returns &cout .

Example

In this example, cin sets the fail bit on the stream when it comes across non-numeric characters. The program clears the fail bit and strips the invalid character from the stream to continue.

Specifies the clog global stream.

Return Value

Remarks

The object controls buffered insertions to the standard error output as a byte stream.

Example

See cerr for an example of using clog .

Specifies the cout global stream.

Return Value

Remarks

The object controls insertions to the standard output as a byte stream.

Example

See cerr for an example of using cout .

wcerr

Specifies the wcerr global stream.

Return Value

Remarks

The object controls unbuffered insertions to the standard error output as a wide stream. Once the object is constructed, the expression wcerr.flags & unitbuf is nonzero. For more details, see wcerr.flags and unitbuf .

Example

See cerr for an example of using wcerr .

Specifies the wcin global stream.

Return Value

Remarks

The object controls extractions from the standard input as a wide stream. Once the object is constructed, the call wcin.tie returns &wcout .

Example

See cerr for an example of using wcin .

wclog

Specifies the wclog global stream.

Return Value

Remarks

The object controls buffered insertions to the standard error output as a wide stream.

Example

See cerr for an example of using wclog .

wcout

Specifies the wcout global stream.

Return Value

Remarks

The object controls insertions to the standard output as a wide stream.

Example

See cerr for an example of using wcout .

CString instances in a wcout statement must be cast to const wchar_t* , as shown in the following example.

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

Синтаксис

Remarks

Объекты можно разделить на две группы:

cin , cout , cerr и clog являются ориентированными на байты, выполняя обычную передачу данных по времени.

wcin , wcout , wcerr и wclog являются широкими, переводятся в расширенные символы, которые программа обрабатывает внутренним образом.

После выполнения определенных операций с потоком, например со стандартным входом, нельзя выполнять операции с разными ориентациями в одном потоке. Таким образом, программа не может одновременно взаимодействовать с cin и, например wcin .

Все объекты, объявленные в этом заголовке, совместно используют свойство довольно необычная — вы можете предположить, что они созданы до любых статических объектов, которые вы определяете, в записи преобразования, которая включает <iostream> . Точно так же можно предположить, что эти объекты не уничтожаются до деструкторов для любых таких статических объектов, которые вы определяете. (Однако выходные потоки сбрасываются во время завершения программы.) Таким образом, можно безопасно считывать или записывать в стандартные потоки перед запуском программы и после завершения программы.

Однако эта гарантия не является универсальной. Статический конструктор может вызвать функцию в другой записи преобразования. Вызываемая функция не может предположить, что объекты, объявленные в этом заголовке, были созданы с учетом неопределенного порядка, в котором единицы преобразования участвуют в статической конструкции. Чтобы использовать эти объекты в таком контексте, сначала необходимо создать объект класса ios_base::Init .

Глобальные объекты потоков

Имя Описание
cerr Указывает глобальный поток cerr .
cin Указывает глобальный поток cin .
clog Указывает глобальный поток clog .
cout Указывает глобальный поток cout .
wcerr Указывает глобальный поток wcerr .
wcin Указывает глобальный поток wcin .
wclog Указывает глобальный поток wclog .
wcout Указывает глобальный поток wcout .

Объект cerr управляет выводом в буфер потока, связанный с объектом stderr , объявленный в <cstdio> .

Возвращаемое значение

Remarks

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде байтового потока. После создания объекта выражение cerr.flags & unitbuf имеет ненулевое значение и cerr.tie() == &cout . Дополнительные сведения см. в статьях cerr.flags и unitbuf .

Пример

Указывает глобальный поток cin .

Возвращаемое значение

Remarks

Объект контролирует получение данных из стандартного ввода, как потока байтов. После создания объекта вызов cin.tie возвращает &cout .

Пример

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

Указывает глобальный поток clog .

Возвращаемое значение

Remarks

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде байтового потока.

Пример

См. cerr с примером использования clog .

Указывает глобальный поток cout .

Возвращаемое значение

Remarks

Этот объект управляет вставкой в стандартный вывод в виде байтового потока.

Пример

См. cerr с примером использования cout .

wcerr

Указывает глобальный поток wcerr .

Возвращаемое значение

Remarks

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде двухбайтового потока. После создания объекта выражение wcerr.flags & unitbuf не равно нулю. Дополнительные сведения см. в статьях wcerr.flags и unitbuf .

Пример

См. cerr с примером использования wcerr .

Указывает глобальный поток wcin .

Возвращаемое значение

Remarks

Этот объект управляет извлечением из стандартного ввода в виде двухбайтового потока. После создания объекта вызов wcin.tie возвращает &wcout .

Пример

См. cerr с примером использования wcin .

wclog

Указывает глобальный поток wclog .

Возвращаемое значение

Remarks

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде двухбайтового потока.

Пример

См. cerr с примером использования wclog .

wcout

Указывает глобальный поток wcout .

Возвращаемое значение

Remarks

Этот объект управляет вставкой в стандартный вывод в качестве широкого потока.

Пример

См. cerr с примером использования wcout .

Экземпляры CString в операторе wcout необходимо привести к const wchar_t* , как показано в следующем примере.

Обычной отправной точкой для программиста на C++ является приложение "Hello World", выполняемое в командной строке. Именно его вы и создадите в Visual Studio на этом шаге.

Предварительные требования

  • Установите и запустите на своем компьютере Visual Studio с рабочей нагрузкой "Разработка классических приложений на C++". Если установка еще не выполнена, см. статью Установка поддержки C++ в Visual Studio.

Создание проекта приложения

Visual Studio использует проекты, чтобы упорядочить код для приложения, и решения, чтобы упорядочить проекты. Проект содержит все параметры, конфигурации и правила, используемые для сборки приложения. Он управляет связью между всеми файлами проекта и любыми внешними файлами. Чтобы создать приложение, сначала создайте проект и решение.

В Visual Studio в меню Файл выберите пункты Создать > Проект, чтобы открыть диалоговое окно Создание проекта. Выберите шаблон Консольное приложение с тегами C++ , Windows и Консоль, а затем нажмите кнопку Далее.

Диалоговое окно создания проекта.

В диалоговом окне Настроить новый проект в поле Имя проекта введите HelloWorld. Выберите Создать, чтобы создать проект.

Снимок экрана: диалоговое окно "Настройка нового проекта" с текстом HelloWorld, введенным в текстовое поле "Имя проекта".

Visual Studio создаст проект. Вы можете приступать к добавлению и изменению исходного кода. По умолчанию шаблон консольного приложения добавляет исходный код приложения Hello World:

Снимок экрана: проект Hello World в IDE.

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

В Visual Studio в меню Файл выберите пункты Создать > Проект, чтобы открыть диалоговое окно Новый проект.

Снимок экрана: диалоговое окно "Новый проект" с открытым разделом "Установленные" > "Visual C++" с выделенным пунктом "Пустой проект" и Hello World в текстовом поле "Имя".

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

Настройка проекта как консольного приложения

Visual Studio позволяет создавать приложения и компоненты самых разных типов как для Windows, так и для других платформ. Шаблон Пустой проект не определяет тип создаваемого приложения. Консольное приложение — это приложение, которое выполняется в консоли или в окне командной строки. Чтобы создать его, необходимо сообщить Visual Studio, что приложение будет использовать подсистему консоли.

Теперь Visual Studio знает, что создаваемый проект предназначен для выполнения в окне консоли. Далее вы добавите файл с исходным кодом и введете код приложения.

Добавление файла исходного кода

В обозревателе решений выберите проект HelloWorld. В меню Проект выберите команду Добавить новый элемент, чтобы открыть диалоговое окно Добавление нового элемента.

Visual Studio создаст пустой файл исходного кода и откроет его в окне редактора, где в него можно ввести код.

Добавление кода в файл исходного кода

Скопируйте код в окне редактора с файлом HelloWorld.cpp.

Код в окне редактора должен выглядеть следующим образом:

Снимок экрана с кодом Hello World в редакторе.

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

Следующие шаги

Руководство по устранению неполадок

Здесь приведены решения распространенных проблем, которые могут возникнуть при создании первого проекта C++.

Создание проекта приложения: проблемы

В диалоговом окне Новый проект должен быть шаблон Консольное приложение с тегами C++ , Windows и Консоль. Если его нет, возможны две причины. Он может быть отфильтрован из списка или не установлен. Сначала проверьте раскрывающиеся списки фильтров в верхней части списка шаблонов. Выберите фильтры C++ , Windows и Консоль. Должен появиться шаблон консольного приложения C++. Если этого не произошло, значит, рабочая нагрузка Разработка классических приложений на C++ не установлена.

Чтобы установить рабочую нагрузку Разработка классических приложений на C++ , можно запустить установщик прямо из диалогового окна Новый проект. Чтобы запустить установщик, щелкните ссылку Установка других средств и компонентов внизу списка шаблонов. Если в диалоговом окне Контроль учетных записей пользователей запрашиваются разрешения, выберите Да. В установщике должна быть выбрана рабочая нагрузка Разработка классических приложений на C++ . Выберите Изменить, чтобы обновить установку Visual Studio.

Если проект с таким именем уже существует, выберите другое имя для проекта. Можно также удалить существующий проект и повторить попытку. Чтобы удалить существующий проект, удалите папку решения (содержащую файл helloworld.sln) в проводнике.

Если проект с таким именем уже существует, выберите другое имя для проекта. Можно также удалить существующий проект и повторить попытку. Чтобы удалить существующий проект, удалите папку решения (содержащую файл helloworld.sln) в проводнике.

Настройка проекта как консольного приложения: проблемы

Раскрывающийся список не открывается в поле свойства Подсистема, пока не будет выбрано свойство. Щелкните поле ввода, чтобы выбрать его. Можно также последовательно переходить по элементам управления в диалоговом окне с помощью клавиши TAB, пока не будет выделено поле Подсистема. Щелкните раскрывающийся список или нажмите клавиши ALT+стрелка вниз, чтобы открыть его.

Добавление файла исходного кода: проблемы

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

Если вы добавили в проект файл неправильного типа, например файл заголовка, удалите его и повторите попытку. Чтобы удалить файл, выберите его в обозревателе решений. Затем нажмите клавишу DELETE.

Добавление кода в файл исходного кода: проблемы

Если вы случайно закрыли окно редактора с файлом исходного кода, его можно легко открыть снова. Чтобы сделать это, дважды щелкните файл HelloWorld.cpp в окне обозревателя решений.

Если в редакторе исходного кода какие-либо элементы подчеркнуты красной волнистой линией, проверьте, соответствуют ли их написание, пунктуация и регистр символов используемым в примере. В коде на C++ регистр имеет важное значение.

В качестве примера мы рассмотрим подключение библиотеки SDL к нашему проекту в Visual Studio 2017 (работать будет и с более новыми версиями Visual Studio).

Шаг №1: Создаем папку для хранения библиотеки

Создаем папку Libs на диске C ( C:\Libs ).

Шаг №2: Скачиваем и устанавливаем библиотеку



Шаг №3: Указываем путь к заголовочным файлам библиотеки

Открываем свой любой проект в Visual Studio или создаем новый, переходим в "Обозреватель решений" > кликаем правой кнопкой мыши (ПКМ) по названию нашего проекта > "Свойства" :


В "Свойства конфигурации" ищем вкладку "С/С++" > "Общие" . Затем выбираем пункт "Дополнительные каталоги включаемых файлов" > нажимаем на стрелочку в конце > "Изменить" :


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


Заголовочные файлы находятся в папке include внутри нашей библиотеки, поэтому переходим в нее ( C:\Libs\SDL2-2.0.9\include ) и нажимаем "Выбор папки" , а затем "ОК" :



Шаг №4: Указываем путь к файлам с реализацией библиотеки

Переходим на вкладку "Компоновщик" > "Общие" . Ищем пункт "Дополнительные каталоги библиотек" > нажимаем на стрелочку в конце > "Изменить" :


Опять же, нажимаем на иконку с папкой, а затем на появившееся троеточие. Нам нужно указать следующий путь: C:\Libs\SDL2-2.0.9\lib\x86 . Будьте внимательны, в папке lib находятся две папки: x64 и x86 . Даже если у вас Windows разрядности x64, указывать нужно папку x86 . Затем "Выбор папки" и "ОК" :


После этого переходим в "Компоновщик" > "Ввод" . Затем "Дополнительные зависимости" > нажимаем на стрелочку в конце > "Изменить" :


В появившемся текстовом блоке вставляем:


Затем переходим в "Компоновщик" > "Система" . После этого "Подсистема" > нажимаем на стрелочку вниз > выбираем "Консоль (/SUBSYSTEM:CONSOLE)" > "Применить" > "ОК" :



Шаг №5: Копируем dll-ку в папку с проектом

Переходим в папку x86 ( C:\Libs\SDL2-2.0.9\lib\x86 ), копируем SDL2.dll и вставляем в папку с вашим проектом в Visual Studio. Чтобы просмотреть папку вашего проекта в Visual Studio, нажмите ПКМ по названию вашего проекта > "Открыть содержащую папку" :


Затем вставляем скопированный файл (SDL2.dll) в папку с проектом (где находится рабочий файл .cpp):


Шаг №6: Тестируем

Теперь, чтобы проверить, всё ли верно мы сделали — копируем и запускаем следующий код:

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