Tôi đang viết một chương trình trên nền tảng Linux đang tạo ra các tệp văn bản sẽ được xem trên, chắc chắn, một nền tảng Windows.Thay đổi std :: endl để đưa ra CR + LF thay vì LF
Hiện tại, hãy chuyển std::endl
thành một ostream
chỉ tạo ký tự CR cho dòng mới. Đương nhiên, các tập tin văn bản trông sai trong MS Notepad.
- Có cách nào thay đổi
std::endl
sao cho nó sử dụng CR + LF cho dòng mới thay vì LF? - Tôi biết tôi có thể viết trình xử lý tùy chỉnh của riêng mình, như
win_endl
, để tạo dòng mới của riêng mình, nhưng tôi sử dụng biểu tượngstd::endl
ở nhiều nơi và giống như nhiều lập trình viên, có xu hướng làm điều làm việc có thể. Tôi có thể chỉ đơn giản là quá tảistd::endl
để sản xuất CR + LF, hoặc là một ý tưởng câm để bảo trì?
NB: Tôi đã kiểm tra this question, nhưng yêu cầu về cách khác và câu trả lời được chấp nhận có vẻ chưa hoàn chỉnh.
Một tùy chọn khác là sử dụng công cụ trên Windows biết cách xử lý các dòng mới của Unix (ví dụ, hầu hết mọi trình soạn thảo khác Notepad) hoặc sử dụng công cụ chuyển đổi kết thúc dòng (thường được gọi là unix2dos.exe hoặc một cái gì đó) . –
@Michael Burr - ý tưởng hay, nhưng khó để hỗ trợ với cơ sở khách hàng của chúng tôi là phản ứng ruột của tôi. –
Nó không phải chạy trên máy khách hàng - có các bộ lọc sẽ thực hiện tương tự trên một hộp Unix. Bạn có thể có các tập tin đầu ra được sản xuất bởi chương trình hiện tại của bạn chạy qua bộ lọc trước khi bạn gói chúng để phân phối cho khách hàng. Nó có vẻ hacky, nhưng tôi nghĩ rằng nó thực sự có thể ít hacky hơn so với mucking xung quanh với C++ streamio (và nó có thể là công việc ít hơn nhiều). –