2010-09-01 74 views
5

Tôi có một tệp văn bản hướng dòng (Unicode) được tạo bằng cách sử dụng CreateFile() và WriteFile().Đọc tập tin văn bản (Unicode) trong 'C' bằng cách sử dụng bản gốc Win32

Đọc tệp đó dưới dạng luồng nhị phân bằng cách sử dụng ReadFile() rất đơn giản, nhưng cần xử lý thêm ở mức thấp để chia thành các dòng.

Có chức năng Win32 nào thực hiện điều này cho tôi không?

Một lần nữa, xin lưu ý rằng nó nằm trong 'C' (không phải C++) và tôi không muốn sử dụng các hàm POSIX/ANSI C như readline().

Nếu câu trả lời cho câu hỏi nói trên là âm, thì "mã ngắn nhất" sẽ thực hiện việc đọc tệp văn bản theo dòng, chỉ sử dụng hàm Win32 C gốc là gì? ví dụ. sử dụng ReadFile(), StrChr(), v.v.

Cảm ơn.

+1

Bạn có nghĩa là UTF-16LE không? – dreamlax

+0

Có. UTF-16, Little Endian. –

+0

Ugh. CRV MSVC hỗ trợ điều này. "ccs" trong đối số chế độ fopen(), sau đó chỉ fgetws(). –

Trả lời

4

AFAIK không có hàm win32 để đọc từng dòng tệp.

+0

Đây thực sự là những gì tôi đã quan sát cho đến nay để kiểm tra: http://msdn.microsoft.com/en-us/library/aa364232%28VS.85%29.aspx Nhưng tôi có thể thiếu một cái gì đó. –

+0

Bài viết tuyệt vời sau cho thấy rõ ràng rằng không có() tương đương trong Win32: http://www.apitalk.com/windows-Programming/Why-Unicode-Is-Important-Before-You-Start-To- Program.html Vì vậy, bước tiếp theo cho tôi là tạo ra chức năng của riêng tôi để bắt chước, bằng cách sử dụng ReadFile() và StrChr(). –

+0

Liên kết apitalk.com đó đã chết ... [This one] (http://support.microsoft.com/kb/99456) không phải là, và nó xác nhận kết luận của bạn. – WinWin

Các vấn đề liên quan