Está en la página 1de 5

Tipos de archivo en C++

 Archivos de texto.
 Archivos binarios.
 Archivos secuenciales.
 Archivos directos (relativos, de accesos directos o aleatorios).

Funciones de archivos en C++


Función abrir archivos fopen()
Cierre de archivos  fclose()
 fcloseall()
Escritura de registros usando fwrite()
Vaciado de buffers fflush()
Lectura de registros fread()
Reposicionando el apuntador y Puntos de referencia fseek()
Conociendo la posición del apuntador del archivo ftell()
Colocando el apuntador del archivo al principio con la
rewind()
función
Detectando el final del archivo con feof()
Cambiando nombres de archivos rename()
Eliminando archivos remove()

Funciones de archivos en una cadena C++


strcpy() 
Copiar una cadena y pegarla sobre otra. 
DE COPIA:
strncpy() 
Copia los primeros "n" caracteres de una cadena a otra. 
strcat() 
DE Concatena dos cadenas. 
CONCATENACIÓN: strncat() 
Concatena los primeros "n" caracteres de una cadena al final de otra. 
strcmp() 
Compara si dos cadenas son iguales. 
DE COMPARACIÓN: strncmp() 
Compara si los primeros "n" caracteres de una cadena son iguales a los primeros "n"
caracteres de otra. 
DE BÚSQUEDA: strchr() 
Busca en la cadena la primera ocurrencia de un caracter (char) indicado. 
strrchr() 
Busca en la cadena la última ocurrencia de un caracter (char) indicado. 
strcspn() 
Busca en una cadena la primera ocurrencia de cualquiera de los caracteres de otra cadena y
retorna la posición de la misma. 
strpbrk() 
Busca en una cadena la primera ocurrencia de cualquiera de los caracteres de otra cadena y
retorna un puntero a char con la subcadena formada desde esa posición. 

strspn()
Retorna el largo de la porción inicial de una cadena que está formada solamente por los
caracteres presentes en otra. 
strstr() 
Busca una cadena dentro de otra cadena, retorna un puntero a la subcadena. 
strtok() 
Divide una cadena en segmentos (o tokens) delimitados por los caracteres char que
indiquemos. 

Lectura y escritura de archivos en C++


En C, el proceso de abrir y manipular ficheros requería un gran conocimiento del
lenguaje para prepararle para la complejidad de las operaciones. Sin embargo, la
librería iostream de C++ proporciona una forma simple de manejar ficheros, y por eso
se puede presentar mucho antes de lo que se haría en C.
Para poder abrir un fichero para leer y escribir, debe incluir la librería fstream. Aunque
eso implica la inclusión automática de la librería iostream, es prudente
incluir iostream si planea usarcin, cout, etc.
Para abrir un fichero para lectura, debe crear un objeto ifstream que se usará
como cin. Para crear un fichero de escritura, se crea un objeto ofstream que se
comporta como cout. Una vez que tiene abierto el fichero puede leer o escribir en él
como si usara cualquier objeto iostream. Así de simple, que es el objetivo, por
supuesto.
Una de funciones las más útiles de la librería iostream es getline(), que permite leer
una línea (terminada en nueva línea) y guardarla en un objeto string [37]. El primer
argumento es el objetoifstream del que se va a leer la información y el segundo
argumento es el objeto string. Cuando termina la llamada a la función, el
objeto string contiene la línea capturada.
Aquí hay un ejemplo que copia el contenido de un fichero en otro.

//: C02:Scopy.cpp
// Copy one file to another, a line at a time
#include <string>
#include <fstream>
using namespace std;

int main() {
ifstream in("Scopy.cpp"); // Open for reading
ofstream out("Scopy2.cpp"); // Open for writing
string s;
while(getline(in, s)) // Discards newline char
out << s << "\n"; // ... must add it back
} ///:~
Para abrir los ficheros, únicamente debe controlar los nombres de fichero que se usan
en la creación de los objetos ifstream y ofstream.
Aquí se presenta un nuevo concepto: el bucle while. Aunque será explicado en detalle
en el siguiente capítulo, la idea básica consiste en que la expresión entre paréntesis
que sigue al whilecontrola la ejecución de la sentencia siguiente (pueden ser múltiples
sentencias encerradas entre llaves). Mientras la expresión entre paréntesis (en este
caso getline(in, s) produzca un resultado «verdadero», las sentencias controladas por
el while se ejecutarán. getline() devuelve un valor que se puede interpretar como
«verdadero» si se ha leido otra línea de forma satisfactoria, y «falso» cuando se llega al
final de la entrada. Eso implica que el while anterior lee todas las líneas del fichero de
entrada y las envía al fichero de salida.
getline() lee los caracteres de cada línea hasta que descubre un salto de línea. Sin
embargo, descarta el carácter de nueva línea y no lo almacena en el objeto string. Por
lo que si queremos copiar el fichero de forma idéntica al original, debemos añadir el
carácter de nueva línea como se muestra arriba.
Otro ejemplo interesante es copiar el fichero entero en un único objeto string:
//: C02:FillString.cpp
// Read an entire file into a single string
#include <string>
#include <iostream>
#include <fstream>
using namespace std;

int main() {
ifstream in("FillString.cpp");
string s, line;
while(getline(in, line))
s += line + "\n";
cout << s;
} ///:~

Debido a la naturaleza dinámica de los strings, no hay que preocuparse de la cantidad


de memoria que hay que reservar para el string. Simplemente hay que añadir cosas y
el string irá expandiéndose para dar cabida a lo que le introduzca.
Una de las cosas agradables de poner el fichero entero en una cadena es que la
clase string proporciona funciones para la búsqueda y manipulación que le permiten
modificar el fichero como si fuera una simple línea. Sin embargo, tiene sus
limitaciones. Por un lado, a menudo, es conveniente tratar un fichero como una
colección de líneas en vez de un gran bloque de texto. Por ejemplo, si quiere añadir
numeración de líneas es mucho más fácil si tiene un objeto string distinto para cada
línea. Para realizarlo, necesitamos otro concepto.

Programa para calcular el promedio varianza y desviación estándar


#include <iostream> #include <stdlib.h> #include <math.h>
using namespace std;

class operaciones{
public:
float lista[255];
int cuantos;
int aux;
float varian;

public:
//para acceder a los atributos de la clase
void setaux(int ac){aux = ac;};
float getcuantos(){return cuantos;};
void setcuantos(int cuanto){cuantos = cuanto;};
void setvalorlist(float val){lista[aux] = val; aux++;};
//calculo:
float prom();
float varianza();
float desviacion();
};

float operaciones::prom(){
float suma = 0;
float promedio = 0;
for(int i=0; i<cuantos; i++){
suma = suma+lista[i];
};
promedio = suma/cuantos;
return promedio;
}

float operaciones::varianza(){
float suma = 0;
varian = 0;
for(int i=0; i<cuantos; i++){
suma = suma + pow(lista[i],2);
};
varian = suma / cuantos;

return varian;
}
float operaciones::desviacion(){
return sqrt(varian);
}

int main(){
system("color c0");
int numvalores;
int salida = 0;
do{
cout<<"Porfavor, ingrese el numero de valores a promediar:"<<endl;
cout<<" "; cin>>numvalores;
cout<<"\n";
operaciones op;
op.setaux(0);
op.setcuantos(numvalores);

for(int i=0; i<numvalores; i++){


float temporalvalor;
cout<<"Ingresa valor del dato numero "<<i+1<<endl;
cout<<" "; cin>>temporalvalor;
op.setvalorlist(temporalvalor);
};
cout<<"\nEl promedio es: "<<op.prom()<<endl;
cout<<"La varianza es: "<<op.varianza()<<endl;
cout<<"La desviacion estandar es: "<<op.desviacion()<<endl;
cout<<"1.- salir \n 2.- continuar"<<endl;
cin>>salida;
}
while(salida != 1);
}

También podría gustarte