Como anexar texto a um arquivo em C++
-
Utilize
std::ofstream
eopen()
Método para anexar texto a um arquivo -
Utilize
std::fstream
eopen()
Método para anexar texto a um arquivo -
Utilize
write()
Method Withstd::fstream
andopen()
to Append Text to a File
Este artigo introduz múltiplos métodos C++ para anexar texto a um arquivo.
Utilize std::ofstream
e open()
Método para anexar texto a um arquivo
A princípio, devemos criar um objeto ofstream
e depois chamar sua função de membro de open
. Este método toma o nome de um arquivo como um objeto de string
para o primeiro argumento. Como segundo argumento, podemos passar o modo aberto especificando valores constantes pré-definidos mostrados na tabela seguinte:
Constante | Explicação |
---|---|
std::ios_base::app |
procurar até o fim do fluxo antes de cada escrita |
std::ios_base::binary |
aberto em modo binário |
std::ios_base::in |
aberto para leitura |
std::ios_base::out |
aberto à escrita |
std::ios_base::trunc |
descartar o conteúdo do fluxo ao abrir |
std::ios_base::ate |
procurar até o fim do fluxo imediatamente após aberto |
Observe que a seguinte amostra de código cria um arquivo chamado tmp.txt
no diretório de trabalho atual. Você pode passar um caminho completo de um arquivo para criar ou anexar em um local diferente.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::ofstream;
using std::string;
int main() {
string filename("tmp.txt");
ofstream file_out;
file_out.open(filename, std::ios_base::app);
file_out << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
Resultado:
Done !
Utilize std::fstream
e open()
Método para anexar texto a um arquivo
Alternativamente, podemos implementar o exemplo anterior utilizando o fstream
que fornece uma opção para abrir um determinado arquivo para leitura e escrita/adaptação. Este método é uma forma universal de manipular fluxos de arquivos. Note que também adicionamos validação se a declaração com a chamada is_open
, que verifica se o fluxo está associado com o arquivo especificado.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app | std::ios_base::in);
if (file.is_open()) file << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
Utilize write()
Method With std::fstream
and open()
to Append Text to a File
Outro método para resolver este problema é chamar explicitamente a função write
do objeto fstream
, em vez de utilizar o operador <<
como fizemos nos exemplos anteriores. Este método deve ser mais rápido para a maioria dos cenários, mas sempre trace um perfil de seu código e compare os tempos se você tiver requisitos rígidos de desempenho.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string text("Some huge text to be appended");
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app);
if (file.is_open()) file.write(text.data(), text.size());
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook