cuốn sách gpt4 ai đã làm

Có cách nào hợp lý hơn (hơn) để xác định chiều rộng của thiết bị đầu cuối mà ostream đang nhắm mục tiêu không?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 07:14:31 30 4
mua khóa gpt4 Nike

Tôi có chức năng in một số văn bản ra dòng và nó nhận được. Nếu ostream nhắm mục tiêu vào một thiết bị đầu cuối, tôi muốn nó thích ứng với độ rộng của thiết bị đầu cuối, nếu không thì mặc định là một số giá trị.

Những gì tôi đang làm bây giờ là:

  1. từ suối 中获取一个 ngoài dòng.
  2. từ ngoài dòng 中获取一个 TÀI LIỆU*.
  3. từ TÀI LIỆU* Nhận một bộ mô tả tập tin số nguyên.
  4. thực hiện ioctl(file_descriptor, TIOCGWINSZ, &my_struct_winsize);

Nhờ câu trả lời SO này, bước 1 và 2 mang lại:

Lấy FILE* từ std::fstream

Nhưng chúng không có tính di động và dành riêng cho GCC (Tôi không chắc liệu chúng có hoạt động với các luồng khác ngoài cout/cerr/cin hay không). Tôi có thể làm gì tốt hơn?

câu trả lời hay nhất

Không có điều nào trong số này là gcc cụ thể. phần còn lại,TIOCGWINSZĐược triển khai rộng rãi và tương thích với các thuật ngữ POSIX ( thiết bị đầu cuối I/O ) được sử dụng cùng với tương ứng SIGWINCHKỳ lạ là không có trong POSIX. Các cách khác để có được độ rộng của thiết bị đầu cuối (vẫn dành riêng cho nền tảng POSIX, thường không áp dụng được cho Windows):

  • Kiểm tra các biến môi trường CỘTDÒNG (Nhiều ứng dụng đầu cuối, bao gồm cả những ứng dụng sử dụng lời nguyền thực hiện việc này, xem ví dụ sử dụng_env , bởi bất kỳ X/Mở lời nguyền Việc thực hiện cung cấp, ví dụ lời nguyền ).
  • sử dụng thay đổi kích thước Đã hoàn thành chương trình báo cáo vị trí con trỏ ECMA-48.

Đối với Windows, điều này không áp dụng được. Bạn sẽ nhận được thông tin từ một trong các lệnh gọi API của bảng điều khiển, ví dụ: GetConsoleScreenBufferThông tin Cygwin là trường hợp đặc biệt vì nó chạy (ít nhiều) với . ioctl Các ứng dụng giống POSIX hoạt động cùng nhau. và I/O thiết bị đầu cuối POSIX. MinGW ở cấp độ thấp hơn và không cung cấp bất kỳ tiện ích mở rộng thực sự nào cho API bảng điều khiển trong lĩnh vực này.

Đọc thêm:

Về c++ - có cách nào hợp lý hơn (hơn) để xác định độ rộng của thiết bị đầu cuối mà ostream đang nhắm mục tiêu không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/35668636/

30 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress