Здравствуйте! Учу С++, программирование и в целом развиваюсь в сфере IT.
Сегодня обнаружил в консольке винды команду echo, позволяющую выводить на экран некую надпись.
Решил попробовать вызвать эту команду через C++ и функцию system. Хочу заметить, что всегда использую вариант подключения кириллицы через SetConsoleCP(1251); из windows.h, как и в коде ниже.
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("echo ДАННЫЕ УДАЛЕНЫ");
system("pause");
return 0;
}
Результатом выполнения программы оказались кракозябры, вылезающие при неподключённой кириллице.
Однако, когда я решил использовать в коде функцию setlocale, вывод на экран стал соответствовать моей цели.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
system("echo ДАННЫЕ УДАЛЕНЫ");
system("pause");
return 0;
}
Исходя из опытов выше, возникает вопрос: а чем различаются эти два варианта подключения кириллицы к проекту? Если что, я спрашиваю не только про результат работы, но и про сами процессы, происходящие в системе при использовании этих функций.
Заранее спасибо за ответ.