Cách để nhập xuất kí tự tiếng việt trong console (Visual Studio)

Để làm đồ án thì nhiều khi các bạn muốn có thêm Tiếng Việt để đồ án c++ của các bạn trở nên ấn tượng hơn, từ đó được điểm tốt hơn. Mình đã tìm kiếm rất kì công để ra được cái source code này, hy vọng là sẽ giúp ích được cái gì đó cho các bạn.
Đầu tiên các bạn cần chỉnh để cái console thành utf8:
Click chuột trái vào tên project > Configuration Properties > C/C++ > Command Line > Addition Option > Các bạn nhập vào /utf-8
Xuất kí tự tiếng việt bằng console:

#include<iostream>
#include<windows.h>
using namespace std;
int main() {
	SetConsoleOutputCP(CP_UTF8);
	SetConsoleCP(CP_UTF8);
	wchar_t wstr[] = L"Nhập xuất kí tự Unicode";
	int bufferSize = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
	char* str = new char[bufferSize + 1];
	WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, bufferSize, NULL, NULL);
	str[bufferSize] = 0;
	wcout << str;
}

Tới phần khó rồi đây
Nhập kí tự tiếng việt bằng console:

#include<iostream>
#include<windows.h>
using namespace std;
#define MAX_INPUT_SIZE 500
int main() {
	SetConsoleOutputCP(CP_UTF8);
	SetConsoleCP(CP_UTF8);
    //phan doc
	cout << "Moi nhap 1 chuoi tieng viet: ";
	void* hConsoleInput = GetStdHandle(STD_INPUT_HANDLE);
	wchar_t wstr[MAX_INPUT_SIZE];
	unsigned long  bufferSize;
	ReadConsole(hConsoleInput, wstr, MAX_INPUT_SIZE, &bufferSize, NULL);
	wstr[bufferSize] = 0;
    //phan xuat
	cout << "Chuoi tieng viet ban vua nhap la: ";
	int size = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
	char* str = new char[size + 1];
	WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, size, NULL, NULL);
	str[size] = 0;
	wcout << str;
}

Thôi tạm biệt các bạn mình qua cày view cho sếp 1 tí. Chúc các bạn thành công, nhập xuất được chữ tiếng việt

4 Likes

Mời chú dùng markdown nha:


P/s: Dùng markdown sai cách rồi bạn ei. Sử dụng ``` như trong cái topic thứ hai hướng dẫn nha. Mà xài cái này chỉ sợ bị lỗi thôi. Thường thì làm đồ án sao không dùng GUI luôn, được điểm cao hơn nhiều so với xài Giao diện dòng lệnh (Command-line interface)

4 Likes

Em chưa biết làm bằng Gui thì mình nhập bằng cách nào luôn
Em đang suy nghĩ. Em đang tính dùng EditBox + Button để nhập rồi lấy data của nó ra, nhưng ko biết có ổn không

Ổn nha em :grinning:

1 Like

xài Boost.Nowide thì nhập xuất tiếng Việt vô tư nha :V

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