2009-01-25 13 views
34

Quiero crear un archivo usando C++, pero no tengo ni idea de cómo hacerlo. Por ejemplo, quiero crear un archivo de texto llamado Hello.txt.Crear archivos en C++

¿Alguien me puede ayudar?

Respuesta

69

Una forma de hacerlo es crear una instancia de la clase ofstream y usarla para escribir en su archivo. Aquí hay un enlace a un sitio web que tiene un código de ejemplo, y algo más de información acerca de las herramientas estándar disponibles con la mayoría de las implementaciones de C++:

ofstream reference

Para completar, aquí está un código de ejemplo:

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

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

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

outfile.close(); 

Desea usar std :: endl para finalizar sus líneas. Una alternativa es usar el caracter '\ n'. Estas dos cosas son diferentes, std :: endl vacía el búfer y escribe su salida de inmediato mientras '\ n' le permite al archivo de salida poner toda su salida en un búfer y quizás escribirlo más tarde.

+3

Sin mencionar que std :: endl también escribe la cadena de caracteres de nueva línea específica de la plataforma correcta. –

+2

Para Limberg: eso está mal. "endl: Efectos: llama a os.put (os.widen ('\ n')), luego a os.flush()" - C++ estándar, 27.6.2.7/1 –

+3

@Grant Limberg: '\ n' también escribe el corregir la nueva línea específica de la plataforma - se traduce como apropiado por ostream internals. –

9
#include <iostream> 
#include <fstream> 

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

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

    return 0; 
} 
+9

\ n en la cadena es redundante cuando se usa std :: endl. –

+0

El retorno 0; en la función es redundante cuando se utiliza "int main()" –

+0

Es cierto, pero me gusta vaciar explícitamente el búfer de salida. –

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

Esto es lo que tenía que ver con el fin de utilizar una variable para el nombre del archivo en lugar de una cadena normal.

4

Haga esto con una secuencia de archivos. Cuando se cierra un std::ofstream, se crea el archivo. Personalmente, me gusta este estilo:

#include <fstream> 

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

La variable temporal se destruye inmediatamente después de su creación, por lo que la corriente está cerrado y por lo tanto se crea el archivo.