2011-01-26 34 views
14

Tôi đang cố đọc một tệp mà tôi đã đọc thành công trước đây. Tôi đang đọc nó thông qua một thư viện, và tôi gửi nó như là thư viện (tức là "myfile.txt"). Tôi biết rằng tệp được đọc từ thư mục làm việc/hiện tại.Tôi làm cách nào để tìm thư mục hiện tại?

Tôi nghi ngờ rằng thư mục hiện tại/làm việc đã thay đổi bằng cách nào đó. Làm thế nào để kiểm tra thư mục hiện tại/làm việc là gì?

Trả lời

21

Vì bạn đã thêm thẻ hình ảnh C++ nên tôi sẽ đề xuất chức năng cửa sổ chuẩn để thực hiện. GetCurrentDirectory

Cách sử dụng:

TCHAR pwd[MAX_PATH]; 
GetCurrentDirectory(MAX_PATH,pwd); 
MessageBox(NULL,pwd,pwd,0); 
+0

Thú vị. Bạn có chắc chắn nó không chỉ viết một phần phù hợp trong bộ đệm? – monoceres

+0

Rất tiếc ... Chương trình của tôi không chính xác .. Tôi vừa xóa nhận xét của mình để họ không đánh lừa người khác. Tôi thử nghiệm lại lần nữa: Nếu kích thước bộ đệm được chỉ định không đủ lớn, bộ đệm sẽ được giữ nguyên và kích thước mong muốn sẽ được trả về. – yaobin

8

Boost filesystem thư viện cung cấp một giải pháp làm sạch

current_path() 
2

Dưới đây là câu trả lời nền tảng-agnostic nhất mà tôi có một thời gian trước:

How return a std::string from C's "getcwd" function

Đó là khá dài , nhưng thực hiện chính xác những gì nó phải làm, với một giao diện C++ tốt đẹp (tức là nó trả về một chuỗi, không phải là một chiều dài-bạn-chính xác? - (const) char*).

Để im lặng cảnh báo MSVC về deprecation của getcwd, bạn có thể làm một

#if _WIN32 
    #define getcwd _getcwd 
#endif // _WIN32 
Các vấn đề liên quan