Crie um arquivo em C++
-
Use
std::fstream,std::openestd::ios_base::outpara criar um arquivo em C++ -
Use
std::fstream,std::openestd::ios_base::apppara criar um arquivo em C++ -
Use as funções
std::fstreamefopenpara criar um arquivo em C++
Este artigo explicará vários métodos de como criar um arquivo em C++.
Use std::fstream, std::open e std::ios_base::out para criar um arquivo em C++
A criação de arquivos geralmente está ligada à operação de abertura de arquivos, que em si é a ação de associar a estrutura do fluxo de arquivos ao arquivo físico correspondente no disco. Normalmente, a operação de criação de arquivo depende do modo em que o programa abre o arquivo. Existem vários modos para abrir um arquivo, como modo somente gravação, modo somente leitura, modo anexar, etc. Normalmente, cada modo que envolve a gravação no arquivo é destinado a criar um novo arquivo se o nome de arquivo fornecido não existir. Portanto, precisamos chamar a função integrada open de std::fstream para criar um novo arquivo com o nome fornecido como o primeiro argumento string. O segundo argumento para open especifica o modo no qual abrir o fluxo de arquivos, e esses modos são predefinidos pelo idioma (consulte página).
#include <fstream>
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;
int main() {
string filename("output.txt");
fstream output_fstream;
output_fstream.open(filename, std::ios_base::out);
if (!output_fstream.is_open()) {
cerr << "Failed to open " << filename << '\n';
} else {
output_fstream << "Maecenas accumsan purus id \norci gravida pellentesque."
<< endl;
cerr << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Done Writing!
Use std::fstream, std::open e std::ios_base::app para criar um arquivo em C++
Alternativamente, podemos abrir o arquivo no modo append denotado por std::ios_base::app e forçar o stream a ser posicionado no final do arquivo em cada escrita. Este modo também pressupõe a criação de um novo arquivo se ele não existir no caminho fornecido. Observe que, o fluxo de arquivo aberto com êxito pode ser verificado com a função is_open que retorna true quando o fluxo é associado.
#include <fstream>
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;
int main() {
string text("Large text stored as a string\n");
string filename2("output2.txt");
fstream outfile;
outfile.open(filename2, std::ios_base::app);
if (!outfile.is_open()) {
cerr << "failed to open " << filename2 << '\n';
} else {
outfile.write(text.data(), text.size());
cerr << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Done Writing!
Use as funções std::fstream e fopen para criar um arquivo em C++
Outra opção para criar um arquivo é utilizar a interface da biblioteca padrão C fopen, que retorna a estrutura FILE*. A função leva dois argumentos: uma string de caracteres que especifica o caminho do arquivo a ser aberto e outra literal de string para indicar o modo de abertura. Seis modos comuns são definidos: r - somente leitura quando o fluxo é posicionado no início, w - somente gravação - no início, a - somente gravação (anexar) - posicionado no final do arquivo, e as versões positivas dos três - r+, w+, a+, que adicionalmente incluem o modo oposto.
#include <fstream>
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;
int main() {
string text("Large text stored as a string\n");
fstream outfile;
string filename3("output3.txt");
FILE *o_file = fopen(filename3.c_str(), "w+");
if (o_file) {
fwrite(text.c_str(), 1, text.size(), o_file);
cerr << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Done Writing!
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