Crie um arquivo em C++
-
Use
std::fstream
,std::open
estd::ios_base::out
para criar um arquivo em C++ -
Use
std::fstream
,std::open
estd::ios_base::app
para criar um arquivo em C++ -
Use as funções
std::fstream
efopen
para 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