2009-01-25 36 views
34

Tôi muốn tạo một tệp bằng C++, nhưng tôi không biết cách thực hiện. Ví dụ tôi muốn tạo một tập tin văn bản có tên Hello.txt.Tạo các tập tin trong C++

Có ai có thể giúp tôi không?

Trả lời

69

Một cách để thực hiện việc này là tạo một thể hiện của lớp gốc và sử dụng nó để ghi vào tệp của bạn. Dưới đây là một liên kết đến một trang web có một số mã ví dụ, và một số chi tiết thông tin về các công cụ tiêu chuẩn có sẵn với hầu hết các triển khai của C++:

ofstream reference

Để hoàn chỉnh, đây là một số mã ví dụ:

// using ofstream constructors. 
#include <iostream> 
#include <fstream> 

std::ofstream outfile ("test.txt"); 

outfile << "my text here!" << std::endl; 

outfile.close(); 

Bạn muốn sử dụng std :: endl để kết thúc các dòng của bạn. Cách khác là sử dụng ký tự '\ n'. Hai thứ này khác nhau, std :: endl flushes buffer và ghi kết xuất của bạn ngay lập tức trong khi '\ n' cho phép outfile đặt tất cả đầu ra của bạn vào bộ đệm và có thể viết nó sau.

+3

Chưa kể rằng std :: endl cũng viết đúng chuỗi ký tự dòng mới cụ thể của nền tảng. –

+2

Để Limberg: đó là sai. "endl: Hiệu ứng: Cuộc gọi os.put (os.widen ('\ n')), sau đó os.flush()" - C++ tiêu chuẩn, 27.6.2.7/1 –

+3

@Grant Limberg: '\ n' cũng viết chính xác nền tảng cụ thể dòng mới - nó được dịch là thích hợp bởi các bên trong ostream. –

9
#include <iostream> 
#include <fstream> 

int main() { 
    std::ofstream o("Hello.txt"); 

    o << "Hello, World\n" << std::endl; 

    return 0; 
} 
+9

\ n trong chuỗi là dư thừa khi sử dụng std :: endl. –

+0

Trả lại 0; trong chức năng là dư thừa khi sử dụng "int main()" –

+0

Đúng, nhưng tôi muốn xóa bộ đệm đầu ra một cách rõ ràng. –

2
#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

string filename = "/tmp/filename.txt"; 

int main() { 
    std::ofstream o(filename.c_str()); 

    o << "Hello, World\n" << std::endl; 

    return 0; 
} 

Đây là những gì tôi phải làm để sử dụng một biến cho tên tập tin thay vì một chuỗi thông thường.

4

Thực hiện việc này bằng luồng tệp. Khi một std::ofstream bị đóng, tệp sẽ được tạo. Cá nhân tôi thích kiểu này:

#include <fstream> 

int main() 
{ 
    std::ofstream{ "foo.txt" }; 
    // foo.txt has been created here 
} 

Biến tạm thời bị hủy ngay sau khi tạo, do đó luồng được đóng và do đó tệp được tạo.