Самые распространенные проблемы в C++
Проблема 1
Как использовать русский язык в консоли C++?
Ответ
По умолчанию в консоли C++ русский язык не используется, чтобы его использовать вам нужно будет подключить заголовочный файл Windows.h:
#include
#include
И прописать следующие две строчки в функции main():
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Проблема 2
При выполнении программы появляется чёрное консольное окно, а затем сразу пропадает.
Ответ
Некоторые компиляторы (например, Bloodshed’s Dev C++) автоматически не задерживают консольное окно после того, как программа завершает своё выполнение. Если проблема в компиляторе, то следующие два шага решат эту проблему:
Во-первых, добавьте следующую строчку кода в верхнюю часть вашей программы:
#include
#include
Во-вторых, добавьте следующий код в конец функции main() (прямо перед оператором return):
std::cin.clear();
std::cin.ignore(32767, '\n');
std::cin.get();
std::cin.clear();
std::cin.ignore(32767, '\n');
std::cin.get();
Таким образом программа будет ждать нажатия клавиши для продолжения (закрытия консольного окна). Вы получите время, чтобы хорошенько всё рассмотреть/изучить. После нажатия любой клавиши, консольное окно закроется.
Другие решения, такие как system("pause");, могут работать только на определенных операционных системах, поэтому вариант выше использовать предпочтительнее.
Примечание: Visual Studio не задерживает консольное окно, если выполнение запущено с отладкой (Debug Menu > Start Debugging). Если вы хотите, чтобы была пауза — воспользуйтесь решением выше или запустите программу без отладки (Debug Menu > Start Without Debugging).
Проблема 3
При компиляции в Microsoft Visual C++ я получаю следующую ошибку:
«c:vcprojectstest.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive».
Ответ
Эта ошибка появляется, когда компилятор Microsoft Visual C++ использует предварительно скомпилированные заголовки (precompiled headers), что является таковым по умолчанию. Для устранения этой проблемы, вам нужно просто найти файл, в котором есть эта ошибка и добавить следующую строчку кода на первое место в вашем файле (разместить на первой строке):
#include "stdafx.h"
#include "stdafx.h"
Обратите внимание, в программах с несколькими файлами, каждый файл должен начинаться именно с этой строчки кода. В качестве альтернативы, вы можете просто отключить использование предварительно скомпилированных заголовков.
Проблема 4
При использовании cin, cout или endl компилятор говорит, что cin, cout или endl являются «undeclared identifier» (необъявленными идентификаторами).
Ответ
Во-первых, убедитесь, что у вас присутствует следующая строчка кода в верхней части вашей программы:
#include
#include
Во-вторых, убедитесь, что cin, cout или endl имеют префикс “std::”. Например:
std::cout « "Hello world!" « std::endl;
std::cout « "Hello world!" « std::endl;
Проблема 5
При использовании endl для перехода на новую строку, появляется ошибка, что end1 является «undeclared identifier».
Ответ
Убедитесь, что вы не спутали букву l (нижний регистр L) в endl с цифрой 1. В endl – всё буквы. Рекомендуется использовать шрифт, в котором хорошо видны различия между буквой L в нижнем регистре, буквой i в верхнем регистре и цифрой 1. Также легко ..
Проблема 1
Как использовать русский язык в консоли C++?
Ответ
По умолчанию в консоли C++ русский язык не используется, чтобы его использовать вам нужно будет подключить заголовочный файл Windows.h:
#include
#include
И прописать следующие две строчки в функции main():
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Проблема 2
При выполнении программы появляется чёрное консольное окно, а затем сразу пропадает.
Ответ
Некоторые компиляторы (например, Bloodshed’s Dev C++) автоматически не задерживают консольное окно после того, как программа завершает своё выполнение. Если проблема в компиляторе, то следующие два шага решат эту проблему:
Во-первых, добавьте следующую строчку кода в верхнюю часть вашей программы:
#include
#include
Во-вторых, добавьте следующий код в конец функции main() (прямо перед оператором return):
std::cin.clear();
std::cin.ignore(32767, '\n');
std::cin.get();
std::cin.clear();
std::cin.ignore(32767, '\n');
std::cin.get();
Таким образом программа будет ждать нажатия клавиши для продолжения (закрытия консольного окна). Вы получите время, чтобы хорошенько всё рассмотреть/изучить. После нажатия любой клавиши, консольное окно закроется.
Другие решения, такие как system("pause");, могут работать только на определенных операционных системах, поэтому вариант выше использовать предпочтительнее.
Примечание: Visual Studio не задерживает консольное окно, если выполнение запущено с отладкой (Debug Menu > Start Debugging). Если вы хотите, чтобы была пауза — воспользуйтесь решением выше или запустите программу без отладки (Debug Menu > Start Without Debugging).
Проблема 3
При компиляции в Microsoft Visual C++ я получаю следующую ошибку:
«c:vcprojectstest.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive».
Ответ
Эта ошибка появляется, когда компилятор Microsoft Visual C++ использует предварительно скомпилированные заголовки (precompiled headers), что является таковым по умолчанию. Для устранения этой проблемы, вам нужно просто найти файл, в котором есть эта ошибка и добавить следующую строчку кода на первое место в вашем файле (разместить на первой строке):
#include "stdafx.h"
#include "stdafx.h"
Обратите внимание, в программах с несколькими файлами, каждый файл должен начинаться именно с этой строчки кода. В качестве альтернативы, вы можете просто отключить использование предварительно скомпилированных заголовков.
Проблема 4
При использовании cin, cout или endl компилятор говорит, что cin, cout или endl являются «undeclared identifier» (необъявленными идентификаторами).
Ответ
Во-первых, убедитесь, что у вас присутствует следующая строчка кода в верхней части вашей программы:
#include
#include
Во-вторых, убедитесь, что cin, cout или endl имеют префикс “std::”. Например:
std::cout « "Hello world!" « std::endl;
std::cout « "Hello world!" « std::endl;
Проблема 5
При использовании endl для перехода на новую строку, появляется ошибка, что end1 является «undeclared identifier».
Ответ
Убедитесь, что вы не спутали букву l (нижний регистр L) в endl с цифрой 1. В endl – всё буквы. Рекомендуется использовать шрифт, в котором хорошо видны различия между буквой L в нижнем регистре, буквой i в верхнем регистре и цифрой 1. Также легко ..