2013-03-27 24 views
18

Tôi chỉ đơn giản là cố gắng để tạo ra một tập tin văn bản nếu nó không tồn tại và tôi không thể có vẻ để có được fstream để làm điều này.fstream sẽ không tạo ra một tập tin

#include <fstream> 
using std::fstream; 

int main(int argc, char *argv[]) { 
    fstream file; 
    file.open("test.txt"); 
    file << "test"; 
    file.close(); 
} 

Tôi có cần chỉ định bất kỳ điều gì trong hàm open() để tạo tệp không? Tôi đã đọc rằng bạn không thể chỉ định ios::in vì điều đó sẽ mong đợi một tệp đã tồn tại ở đó, nhưng tôi không chắc liệu các thông số khác có cần phải được chỉ định cho tệp không tồn tại hay không.

+0

tôi nghĩ rằng bạn phải sử dụng: .open ("test.txt", fstream :: in) ; – FacundoGFlores

Trả lời

14

Bạn nên thêm fstream :: ra để mở phương pháp như thế này:

file.open("test.txt",fstream::out); 

Thông tin thêm về cờ fstream, hãy kiểm tra liên kết này: http://www.cplusplus.com/reference/fstream/fstream/open/

+1

Cảm ơn bạn, đã làm các trick. – raphnguyen

+0

Tôi không được phép thực hiện 'file.open (" test.txt ", fstream :: in | fstream :: out | fstream :: binary);' trên một tệp chưa tồn tại? – raphnguyen

+4

Bạn nên thêm fstream :: trunc nếu bạn muốn fstream :: in hoạt động trên một tệp không tồn tại. – haitaka

10

Bạn cần thêm một số đối số. Ngoài ra, instancing và mở cửa có thể được đặt trong một dòng:

fstream file("test.txt", fstream::in | fstream::out | fstream::trunc); 
1

này sẽ làm:

#include <fstream> 
#include <iostream> 
using std::fstream; 

int main(int argc, char *argv[]) { 
    fstream file; 
    file.open("test.txt",std::ios::out); 
    file << fflush; 
    file.close(); 
} 
Các vấn đề liên quan