Mấy bác cho em hỏi các kí tự char in ra kiểu này đúng ko ạ?


do em thấy mấy cái kí tự này có thể vẽ khung nhưng nó lại in ra như trên.
Em thắc mắc là DevC++ in đúng chưa.
Dev C++ không hiểu kí tự char(217) char(218) char(191) char(192)
Terminal trên Windows có vẻ theo CP-1252 encode, còn cái block kia là extend của MSDOS (link tham khảo https://en.wikipedia.org/wiki/Windows-1252)
Muốn in “lạ lạ” như vầy thì bạn nên tìm hiểu: string encode, terminal encode, và cả font nữa á bạn.
Với terminal + compiler “xịn” thì chỉ cần std::cout << "█"; là được đó bạn
đúng rồi. của mình nó chạy theo cái bảng Windows-1252 (CP1252). mình sửa lại bình thường thì phải làm sao vậy
wout nó không in ra cái j hết. mình đang tìm cách để in ra như của bạn
bạn cho mình xem code đi
Giống MSDOS thì có CP437 https://en.wikipedia.org/wiki/Code_page_437
Bạn có thể thử code mình cóp trên mạng như sau
#include <iostream>
#include <windows.h>
int main() {
SetConsoleCP(437);
SetConsoleOutputCP(437);
std::cout << (char)217 << "\n";
}
Nhưng mình không recommend cách này, bạn nên tham khảo cách xuất mã unicode ra terminal cho nó portable hơn nhé
Xài Boost.Nowide cho khỏe :V :V
Code này xài nowide standalone port bên vcpkg :V
#include <nowide/iostream.hpp>
#include <nowide/args.hpp>
#include <string>
namespace nwd = nowide;
int main(int argc, char** argv) {
nwd::args args{argc, argv};
if (argc < 2) {
nwd::cout << "Nhập tên của bạn: ";
std::string name;
std::getline(nwd::cin, name);
nwd::cout << "Xin chào, " << name << "\n";
} else {
nwd::cout << "Xin chào, ";
for (int i = 1; i < argc; ++i)
nwd::cout << argv[i] << " ";
nwd::cout << "\n";
}
}

ngon lành 



83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?