2011-05-23 14 views
7

Me gustaría cambiar el nombre de un archivo txt pero no puedo encontrar cómo hacerlo.Cómo cambiar el nombre de un archivo de texto en C++

Por ejemplo, quiero cambiar el nombre de foo.txt a boo.txt en mi programa C++.

+3

C++ no es compatible directamente con los sistemas de archivos. Los diferentes sistemas operativos proporcionan diferentes API para esta funcionalidad. ¿A qué OS estás apuntando? –

+0

Esta no es una pregunta de C++, excepto que puede abrir un archivo con un nombre para leer, abrir uno con otro nombre para escribir y copiar. El cambio de nombre es una función del sistema operativo y, por lo tanto, debe indicarnos qué sistema operativo está utilizando para ayudarnos. –

Respuesta

17

#include <stdio.h> (o <cstdio>) y el uso rename (o std::rename):

rename("oldname.txt", "newname.txt"); 

Contrariamente a la creencia popular, esto está incluido en la biblioteca estándar, y es portátil hasta un punto - aunque por supuesto la Los contenidos permitidos de las cadenas variarán con el sistema de destino.

4

Compatibilidad con el sistema de archivos es notablemente ausente de la biblioteca estándar de C++. Como muestra la respuesta de Jerry Coffin, en realidad hay una función de cambio de nombre en stdio (contrariamente a la creencia popular que compartí). Sin embargo, hay muchos dispositivos relacionados con el sistema de archivos que la lib estándar no cubre, de ahí la existencia de Boost :: Filesystem (especialmente manipulando directorios y recuperando información sobre archivos).

Esta es una decisión de diseño para hacer C++ menos restringido (es decir, hacer posible la compilación en una amplia gama de plataformas, incluidos los sistemas integrados, donde la idea de un archivo es inexistente).

Para llevar a cabo las operaciones de archivo, uno tiene dos opciones:

  • utilizar la API del sistema operativo de destino

  • uso de una biblioteca que proporciona una interfaz unificada a través de plataformas

Boost::Filesystem es esa biblioteca de C++ que abstrae las diferencias de plataforma.

Puede usar el Boost::Filesystem::rename para cambiar el nombre de un archivo.

Cuestiones relacionadas