O melhor tutorial arquivos e fluxos de C ++ em 2024. Neste tutorial você pode aprender Abra o arquivo,Feche o arquivo,Gravar no arquivo,Leia o arquivo,Ler e escrever exemplos,ponteiro de posição de arquivo,
Até agora, temos utilizado a biblioteca padrãoiostream, que fornece um método de fluxos de cinecoutsão usados para ler da entrada padrão e escrever para o fluxo de saída padrão.
Este tutorial mostra como ler e gravar arquivos de fluxo para transmitir arquivos. É aí que outrafstream biblioteca padrão C ++,ele define três novos tipos de dados:
数据类型 | 描述 |
---|---|
ofstream | 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 |
ifstream | 该数据类型表示输入文件流,用于从文件读取信息。 |
fstream | 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。 |
Para registrar a movimentação em C ++, você deve incluir o arquivo de cabeçalho em C ++ arquivo de código-fonte <iostream> e <fstream>.
Antes de ler as informações do arquivo ou gravar em um arquivo, você deve primeiro abrir o arquivo. objetosofstream e fstreampode ser usado para abrir o arquivo para gravação, se você só precisa abrir o arquivo para leitura, use o objetoifstream.
Aqui é a função open () é a sintaxe padrão, a função open () é um membro da fstream, ifstream e ofstream objetos.
void open(const char *filename, ios::openmode mode);
Aqui, aberta) função (membro do primeiro parâmetro para especificar o nome ea localização do arquivo que você deseja abrir, eo segundo parâmetro define o arquivo é o modo aberto.
模式标志 | 描述 |
---|---|
ios::app | 追加模式。所有写入都追加到文件末尾。 |
ios::ate | 文件打开后定位到文件末尾。 |
ios::in | 打开文件用于读取。 |
ios::out | 打开文件用于写入。 |
ios::trunc | 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。 |
É possível utilizar uma combinação de dois ou mais dos modos acima. Por exemplo, se você deseja abrir o arquivo em modo de gravação e deseja truncar o arquivo para impedir que o arquivo já existe, você pode usar a seguinte sintaxe:
ofstream outfile; outfile.open("file.dat", ios::out | ios::trunc );
Da mesma forma, se você deseja abrir um arquivo para leitura e escrita, você pode usar a seguinte sintaxe:
fstream afile; afile.open("file.dat", ios::out | ios::in );
Quando o programa C ++ termina, ele desliga-se automaticamente atualizar todos os fluxos, liberar toda a memória alocada e feche todos os arquivos abertos. Mas os programadores deve desenvolver um bom hábito, antes do programa termina feche todos os arquivos abertos.
Aqui é a função close () é a sintaxe padrão, a função close () é um membro da fstream, ifstream e ofstream objetos.
void close();
Na programação C ++, usamos o operador de inserção de fluxo (<<) para gravar informações em um arquivo, como usar a informação de saída para o operador na mesma tela. A única diferença é que aqui você estiver usandoofstream ou objeto fstreamem vez de objetocout.
Na programação C ++, usamos o operador de extração de fluxo (>>) lê as informações de um arquivo, como usar as informações de entrada do operador a partir do teclado. A única diferença é que aqui você está usandofstream ou objeto ifstreamem vez de objetocin.
O seguinte programa C ++ para abrir um arquivo em modo de leitura e escrita. Após a gravação para o arquivo afile.dat informações inseridas pelo usuário, o programa lê as informações do arquivo e saída para a tela:
#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; }
Quando o código acima é compilado e executado, ele produz as seguintes entradas e saídas:
$./a.out Writing to the file Enter your name: Zara Enter your age: 9 Reading from the file Zara 9
Os exemplos acima usar um objeto de função cin adicional, como getline () função lê uma linha a partir do exterior, ignore () irá ler a declaração antes de deixar os caracteres extras são ignorados.
istream e ostreamfornecer funções de membro para reposicionar a posição do ponteiro de arquivo. Estes incluem sobre funções de membro istream deseekg ( "procurar obter") e sobre o seekpostream( "buscar colocar").
seekp seekg eo argumento é geralmente um número inteiro longo. O segundo parâmetro pode ser usado para especificar a direcção da busca. Encontrar direcção pode serios :: Beg (padrão, posicionando a partir do início do fluxo), que pode ser ios :: cur (de posicionamentoa partir da posição corrente do fluxo), que pode serios :: final (a partirdo final do fluxo é iniciado posicionamento).
ponteiro de posição do arquivo é um valor inteiro que especifica o número de bytes a partir do início do arquivo para o local do ponteiro. Aqui está visando "ficar" instância ponteiro posição do arquivo:
// 定位到 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 );