Как вывести Unicode Box рисунок в C ++?

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

В зависимости от вашей версии Unity вы можете исправить это, выбрав Windows -> Lighting -> Настройки перейдите на вкладку Сцена . Прокрутите вниз и отключите галочку Auto Generate , затем нажмите кнопку Создать молнию .

Для более старой версии Unity без опции Auto Generate см. здесь .

2
задан ReiAcul 22 March 2019 в 14:40
поделиться

2 ответа

Консольные приложения Windows могут выводить широкие строки (L"...") непосредственно на терминал, если режим установлен правильно. Обратите внимание на использование wcout. Сохраните следующий источник в кодировке UTF-8:

#include <iostream>
#include <io.h>
#include <fcntl.h>

using namespace std;

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    wcout << L"┏━━━━━━━━━━━━━━━━━┓" << endl;
    wcout << L"┃" << endl;
}

Скомпилируйте с помощью «cl / EHsc / utf-8 test.cpp». Выход:

┏━━━━━━━━━━━━━━━━━┓
┃
0
ответ дан Mark Tolonen 22 March 2019 в 14:40
поделиться

Консоль Windows поддерживает кодировку UTF-16LE UNICODE.

Вы можете использовать некоторую библиотеку управления коробками, например, PDCurses .

В противном случае вы можете использовать следующий подход

#include <windows.h>
#include <cwchar>

class output_swap {
    output_swap(const output_swap&) = delete;
    output_swap operator=(output_swap&) = delete;
public:
    output_swap( ) noexcept:
        prevCP_( ::GetConsoleCP() )
    {
        ::SetConsoleCP( CP_WINUNICODE );
        ::SetConsoleOutputCP( CP_WINUNICODE );
    }
    ~output_swap() noexcept {
        ::SetConsoleCP( prevCP_ );
        ::SetConsoleOutputCP( prevCP_ );
    }
private:
    ::DWORD prevCP_;
};

void draw_text(const wchar_t* text)
{
  static ::HANDLE _out = ::GetStdHandle(STD_OUTPUT_HANDLE);
  ::DWORD written;
  ::WriteConsoleW( _out, text, std::wcslen(text), &written, nullptr );
}

int main(int argc, const char** argv) {
   output_swap swap;
   draw_text(L"┏━━━━━━━━━━━━━━━━━┓\n");
   draw_text(L"┃        OK       ┃\n");
   draw_text(L"┗━━━━━━━━━━━━━━━━━┛\n");
   return 0;
}

Также проверьте ваш шрифт консоли в настройках консоли. Вероятно, вам нужен растровый шрифт, но это также работает, например, для Consolas.

Если вам нужны консольные потоки ввода-вывода, которые могут работать как с юникодом, так и с переключением блоков, вы можете использовать мою библиотеку

0
ответ дан Victor Gubin 22 March 2019 в 14:40
поделиться
Другие вопросы по тегам:

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