Cách nhập và xuất tiếng Việt có dấu trong C++

Trên DNH có một bài: https://daynhauhoc.com/t/cach-d-c-va-ghi-file-unicode-c

1 Like

hay lắm, thank nhiều nhé bạn

Bạn cho mình hỏi, cái phần này trong code của bạn là đặt font hiển thị là consolas phải không ?

CONSOLE_FONT_INFOEX consoleFont;
consoleFont.cbSize = sizeof(consoleFont);
GetCurrentConsoleFontEx(hdlConsole, FALSE, &consoleFont);
memcpy(consoleFont.FaceName, L"Consolas", sizeof(consoleFont.FaceName));
SetCurrentConsoleFontEx(hdlConsole, FALSE, &consoleFont);

Và giải thích giúp mình luôn cái memcpy là gì, hàm, thủ tục ???
Giải thích rõ giúp mk, mình đang học Pascal nhưng mk có thể đọc đc code C++ được.

Thủ tục copy vùng nhớ đó bạn, gán cho nội dung của FaceName bằng L"Consolas".

1 Like

CONSOLE_FONT_INFOEX là 1 struct mà trong đó, member FaceName luôn là 1 mảng WCHAR, 32 phần tử.

memcpy(consoleFont.FaceName, L"Consolas", sizeof(consoleFont.FaceName));

memcpy là thủ tục copy vùng dữ liệu trong bộ nhớ, cái gì copy được là nó copy, nó copy theo số BYTE , L"Consolas" thực ra là pointer trỏ đến chuỗi đó (trong .rdata của app), sizeof(consoleFont.FaceName) là 64 (1 phần tử WCHAR là 2 byte), bạn phải học full cơ bản C/C++, hiểu được chính xác về bản chất C/C++ mới hiểu được, tham khảo: http://www.cplusplus.com/reference/cstring/memcpy/
P.S: thật sự là nên học C/C++ đi đôi với ASM.

2 Likes

Tuy có hơi lâu (2 năm chứ mấy) :slight_smile:. Nhưng mình cũng xin góp ý tý.
Bạn có thể dùng lệnh chuyển gói CHCP của console để viết tiếng Việt.
Cụ thể là :point_down:

#include <iostream>

int main() {
	system("chcp 65001");
	std::cout << "Việt Nam vô địch";
	return 0;
}

Hmm. . . sau một hồi nghiên cứu thì theo cách này mk thấy chỉ xuất được chứ chưa nhập đc, chắc lại phải làm theo Ngọc tỷ tỷ rồi. :blush:

:stuck_out_tongue_closed_eyes:

3 Likes

@MeigyokuThmn
làm sao để trở lại bình thường được vậy, nếu dùng thế thì ko dùng kiểu biến float đc??

mấy chú code thì comment cho người ta hiểu với

1 Like

Bạn giải thích code được không ?? Viết vậy không hiểu

mn ơi cho e hỏi với ạ
e gõ được tiếng việt nhưng khi chạy thì nó lại ra lỗi ngôn ngữ ạ
ai sửa giúp e với

tại sao mình chạy lại có lỗi này nhỉ “_O_U16TEXT’ was not declared in this scope”

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