Здравствуйте! Учу С++, программирование и в целом развиваюсь в сфере IT.
Сегодня обнаружил в консольке винды команду echo, позволяющую выводить на экран некую надпись.
![99lWUFp5in8.jpg](https://sun9-39.userapi.com/c854320/v854320492/afabb/99lWUFp5in8.jpg)
Решил попробовать вызвать эту команду через 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;
}
Результатом выполнения программы оказались кракозябры, вылезающие при неподключённой кириллице.
![mjQwKFifRvI.jpg](https://pp.userapi.com/c854320/v854320492/afaf5/mjQwKFifRvI.jpg)
Однако, когда я решил использовать в коде функцию setlocale, вывод на экран стал соответствовать моей цели.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
system("echo ДАННЫЕ УДАЛЕНЫ");
system("pause");
return 0;
}
![8XblUj_u3tc.jpg](https://pp.userapi.com/c851224/v851224492/19cec0/8XblUj_u3tc.jpg)
Исходя из опытов выше, возникает вопрос: а чем различаются эти два варианта подключения кириллицы к проекту? Если что, я спрашиваю не только про результат работы, но и про сами процессы, происходящие в системе при использовании этих функций.
Заранее спасибо за ответ.