Q:

Utilização de caracteres ASCII com c++

Boa tarde, tenho estes códigos em c++ e gostava que me esclarecessem o porquê de estes códigos estarem a enviar para a consola caracteres aparentemente aleatórios:
teste.cpp
#include <iostream>
#include "engine.h"

int main() {
    char x;
    Engine engine;
    engine.startup();
    engine.render();
    std::cin >> x;
    return 0;
}

engine.h
#include <iostream>
#include <unistd.h>
#include <string>

struct symbols {
            unsigned char vertical        = 186;
            unsigned char horizontal      = 205;
            unsigned char up_corner_left  = 201;
            unsigned char up_corner_right = 187;
            unsigned char dw_corner_left  = 200;
            unsigned char dw_corner_right = 188;
            } symbol;

class Engine {
private:
    char size[100] = "MODE CON COLS=80 LINES=40";
    unsigned char screen[40][80];

public:
    void startup() {
        for (int i = 0; i < 40; ++i) {
            for (int x = 0; x < 79; ++x) {
                if (i == 0 || x == 0) {
                    screen[i][x] = 201;
                }
            }
        }
        system(size);
    }

    void render() {
        for (int i = 0; i < 40; ++i) {
            for (int x = 0; x < 80; ++x) {
                std::cout << screen[i][x];
            }
        }
    }
};

Nota: Em vez de utilizar ASCII eu poderia usar utf-8 (opção que prefiro), mas também não sei como usar utf-8. Por isso, se me conseguirem por a funcionar com utf-8 também, agradecia (windows 7 ultimate, versão 32-bits).
EDIÇÃO
Consegui fazer uma "moldura" em volta da consola e esconder o mouse graças ao comentário do Penachia, mas ainda fica uma linha em branco no final. Para isso, podia diminuir o tamanho da consola, mas a 1ª linha não aparece. Aqui vai o código editado, alguém me pode ajudar com isto?
#include <iostream>
#include <windows.h>
#include <unistd.h>
#include <string>

void hidecursor () {
    HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO info;
    info.dwSize = 100;
    info.bVisible = FALSE;
    SetConsoleCursorInfo(consoleHandle, &info);
}

struct symbols {
    unsigned char space             = 32;
    unsigned char vertical          = 186;
    unsigned char horizontal        = 205;
    unsigned char up_corner_left    = 201;
    unsigned char up_corner_right   = 187;
    unsigned char dw_corner_left    = 200;
    unsigned char dw_corner_right   = 188;
} symbol;

class Engine {
private:
    char size[100] = "MODE CON COLS=80 LINES=41";
    unsigned char screen[40][80];

public:
    Engine() {
    }
    void startup() {
        for (int i = 0; i < 40; ++i) {
            for (int x = 0; x < 80; ++x) {
                screen[i][x] = symbol.space;
            }
        }
        hidecursor();
        for (int i = 0; i < 40; ++i) {
            for (int x = 0; x < 80; ++x) {
                if (i == 0) {
                    if (x == 0) {
                        screen[i][x] = symbol.up_corner_left;
                    } else{
                        if (x == 79) {
                            screen[i][x] = symbol.up_corner_right;
                        } else {
                            screen[i][x] = symbol.horizontal;
                        }
                    }
                }
                if (i == 39) {
                    if (x == 0) {
                        screen[i][x] = symbol.dw_corner_left;
                    } else{
                        if (x == 79) {
                            screen[i][x] = symbol.dw_corner_right;
                        } else {
                            screen[i][x] = symbol.horizontal;
                        }
                    }
                }
                if (i > 0 && i < 39) {
                    if (x == 0 || x == 79) {
                        screen[i][x] = symbol.vertical;
                    }
                }
            }
        }
        system(size);
    }

    void render() {
        for (int i = 0; i < 40; ++i) {
            for (int x = 0; x < 80; ++x) {
                std::cout << screen[i][x];
            }
        }
    }
};

A:

1º declarar a biblioteca:  
#include <locale.h>

2º colocar no inicio da função main:
setlocale(LC_ALL,""); // Este comando pega o idioma da maquina que está rodando. 
//setlocale(LC_ALL, "Portuguese"); // Caso o idioma da sua máquina não seja Portugues, use este.

#include <iostream>
#include <locale.h>

using namespace std;

int main()
{
    setlocale(LC_ALL,"");

    cout <<"Acento é legal"<< endl;

}

