Latest web development tutorials

++ archivos y secuencias de C

Hasta ahora, hemos utilizado la bibliotecaiostream estándar, que proporciona métodos cinycoutde flujo se utilizan para leer de la entrada estándar y escribir en el flujo de salida estándar.

Este tutorial muestra cómo leer y escribir archivos de la corriente para transmitir archivos. Ahí es donde otrafstream C ++ biblioteca estándar,que define tres nuevos tipos de datos:

数据类型 描述
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

Para presentar la manipulación en C ++, debe incluir el archivo de cabecera en C ++ archivo de código fuente <iostream> y <fstream>.

Abrir el archivo

Antes de leer la información del archivo o escribir en un archivo, primero debe abrir el archivo.ofstream objetos y fstreamse pueden utilizar para abrir el archivo para escritura, si sólo tiene que abrir el archivo para lectura, utilice el objetoifstream.

Esta es la función open () es sintaxis estándar, función open () es un miembro de fstream, ifstream y ofstream objetos.

void open(const char *filename, ios::openmode mode);

Aquí, abierta) función miembro (del primer parámetro para especificar el nombre y la ubicación del archivo que desea abrir, y el segundo parámetro define el modo de archivo se abrió.

模式标志 描述
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

Se puede utilizar una combinación de dos o más de los modos anteriores. Por ejemplo, si desea abrir el archivo en modo escritura y quiere truncar el archivo para evitar que el archivo ya existe, puede utilizar la siguiente sintaxis:

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

Del mismo modo, si desea abrir un archivo para lectura y escritura, puede utilizar la siguiente sintaxis:

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Cierre el archivo

Cuando el programa termina C ++, se apagará automáticamente actualizar todos los flujos, libere toda la memoria asignada y cierre todos los archivos abiertos. Sin embargo, los programadores deben desarrollar un buen hábito, antes de que el programa termina cierre todos los archivos abiertos.

Esta es la función close () es sintaxis estándar, función close () es un miembro de los fstream, ifstream y ofstream objetos.

void close();

Escribir en el archivo

En la programación C ++, se utiliza el operador de inserción corriente (<<) para escribir información en un archivo, al igual que el uso de la información de salida al operador en la misma pantalla. La única diferencia es que aquí se está utilizandoofstream u objeto fstreamen lugar de objetocout.

Leer el archivo

En la programación C ++, utilizamos el operador de extracción de flujo (>>) para leer la información de un archivo, al igual que el uso de la información de entrada del operador desde el teclado. La única diferencia es que aquí se está utilizandofstream u objeto ifstreamen lugar de objetocin.

Leer y escribir ejemplos

El siguiente programa en C ++ que abre un archivo en modo de lectura-escritura. Después de la escritura en el archivo afile.dat la información introducida por el usuario, el programa lee la información del archivo y la salida a la pantalla:

#include <fstream>
#include <iostream>
using namespace std;
 
int main ()
{
    
   char data[100];

   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // 向文件写入用户输入的数据
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // 再次向文件写入用户输入的数据
   outfile << data << endl;

   // 关闭打开的文件
   outfile.close();

   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // 在屏幕上写入数据
   cout << data << endl;
   
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 

   // 关闭打开的文件
   infile.close();

   return 0;
}

Cuando el código se compila y ejecuta, produce las siguientes entradas y salidas:

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Los ejemplos anteriores utilizan un objeto cin función adicional, como getline () función lee una línea desde el exterior, ignoran () la función leerá la declaración antes de dejar salir los caracteres adicionales se ignoran.

puntero de posición del archivo

istream y ostreamofrece funciones miembro para reposicionar la posición del puntero del archivo. Estos incluyen sobre las funciones miembro de IStreamseekg ( "buscan obtener") y en la seekpostream( "Seek puso").

seekp seekg y el argumento suele ser un entero largo. El segundo parámetro se puede utilizar para especificar la dirección de la búsqueda. Encontrar la dirección puede serios :: beg (por defecto, el posicionamiento desde el principio de la corriente), puede ser ios :: cur (posicionamientodesde la posición actual de la corriente), puede serios :: final (desdeel final de la secuencia se inicia posicionamiento).

puntero de posición del fichero es un valor entero que especifica el número de bytes desde el comienzo del archivo en la ubicación del puntero. Aquí está apuntando a "obtener" ejemplo puntero de posición del archivo:

// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );

// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );

// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );

// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );