Thư mục chính không thực sự là khái niệm đa nền tảng. Đề xuất của bạn về thư mục hồ sơ (% USERPROFILE%) là một sự tương tự công bằng, nhưng tùy thuộc vào những gì bạn muốn làm khi bạn có thư mục, bạn có thể muốn một trong các thư mục Application Data hoặc My Documents của người dùng. Trên UNIX, bạn có thể tạo một ".myapp" ẩn trong thư mục chính để giữ các tệp của bạn, nhưng điều đó không đúng trên Windows.
Đặt cược tốt nhất của bạn là viết mã cụ thể cho từng nền tảng, để nhận được thư mục bạn muốn trong mỗi trường hợp. Tùy thuộc vào độ chính xác mà bạn muốn, nó có thể là đủ để sử dụng vv env: HOME trên UNIX, USERPROFILE hoặc APPDATA (tùy thuộc vào những gì bạn cần) trên Windows. Trên UNIX ít nhất (bất kỳ Windows folks quan tâm để bình luận?), Nó thường là thực hành tốt để sử dụng biến môi trường HOME nếu nó được thiết lập, ngay cả khi nó không đồng ý với thư mục cụ thể trong tập tin mật khẩu. Sau đó, vào dịp lẻ khi người dùng muốn tất cả các ứng dụng đọc dữ liệu của họ từ một thư mục khác, nó sẽ vẫn hoạt động.
Nguồn
2010-03-31 12:39:05
Đa nền tảng, bạn không thể. Standard C++ không có chức năng như vậy. –
Kiểm tra câu trả lời của tôi, có một cách đa nền tảng: bạn thực hiện nó bằng cách sử dụng '# ifdef': D – sorin
Xem thêm http: // stackoverflow.com/questions/2910377/get-home-directory-in-linux-c – rogerdpack