2009-01-25 6 views
34

Я хочу создать файл с использованием C++, но я понятия не имею, как это сделать. Например, я хочу создать текстовый файл с именем Hello.txt.Создание файлов в C++

Может ли кто-нибудь мне помочь?

ответ

69

Один из способов сделать это - создать экземпляр класса thestream и использовать его для записи в файл. Вот ссылка на сайт, который имеет некоторый пример кода, и еще некоторая информация о стандартных инструментов, доступных в большинстве реализаций C++:

ofstream reference

Для полноты, вот пример кода:

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

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

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

outfile.close(); 

Вы хотите использовать std :: endl, чтобы закончить ваши строки. Альтернативой является использование символа «\ n». Эти две вещи разные, std :: endl сбрасывает буфер и записывает ваш вывод немедленно, в то время как «\ n» позволяет аутфику помещать весь ваш вывод в буфер и, возможно, писать его позже.

+3

Не говоря уже о том, что std :: endl также записывает правильную характерную строку символов новой строки. –

+2

Лимбергу: Это неправильно. "endl: Эффекты: Вызывает os.put (os.widen ('\ n')), затем os.flush()" - стандарт C++, 27.6.2.7/1 –

+3

@Grant Limberg: '\ n' также записывает правильная конкретная новая строка линии - она ​​переводится соответствующим образом внутренними подразделениями. –

9
#include <iostream> 
#include <fstream> 

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

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

    return 0; 
} 
+9

\ n в строке избыточно при использовании std :: endl. –

+0

Возврат 0; в функции избыточно при использовании «int main()» –

+0

Правда, но мне нравится явно очищать выходной буфер. –

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; 
} 

Это то, что я должен был сделать для того, чтобы использовать переменную для имени файла вместо обычной строки.

4

Сделайте это с файловым потоком. Когда std::ofstream закрыт, файл создается. Лично мне нравится этот стиль:

#include <fstream> 

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

Временная переменная уничтожается сразу после его создания, таким образом, поток закрывается, и, таким образом, создается файл.

Смежные вопросы