Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, estou aprendendo sobre manipulação de arquivos em c++ , mas tenho uma duvida que não achei em lugar nenhum, eu gostaria de abrir escrever na algo no arquivo e mostrar ele para o usuario. Por exemplo eu queria criar um programa que cria arquivo txt em um diretório especifico, escreve  nele algo e depois abre esse arquivo txt pro usuario em um bloco de notas e mostra o que foi escrito nele.  Desde já agradeço a quem possa me ajudar.

  • Curtir 1
Postado

@SrJoker Alguns vão dizer que isso acaba prendendo você a um sitema operacional, outros vão dizer que você pode acionar um vírus caso o programa acionado tenha sido trocado por outro. Mas pessoalmente não vejo problema nenhum a título de conhecimento.

system("start arquivo.txt");

A função system() gera uma chamada para o sistema operacional, que no caso do Windows, executa "start arquivo.txt", que por sua vez aciona o programa associado à extensão txt e abre o arquivo.

 

Você até poderia identificar o sistema operacional antes e executar o comando adequado para cada um, mas isso vai depender de cada compilador, ou vai dar um belo trabalho e não ser tão confiável.

Postado
43 minutos atrás, JorgeGus disse:

@SrJoker Alguns vão dizer que isso acaba prendendo você a um sitema operacional, outros vão dizer que você pode acionar um vírus caso o programa acionado tenha sido trocado por outro. Mas pessoalmente não vejo problema nenhum a título de conhecimento.

system("start arquivo.txt");

A função system() gera uma chamada para o sistema operacional, que no caso do Windows, executa "start arquivo.txt", que por sua vez aciona o programa associado à extensão txt e abre o arquivo.

 

Você até poderia identificar o sistema operacional antes e executar o comando adequado para cada um, mas isso vai depender de cada compilador, ou vai dar um belo trabalho e não ser tão confiável.

Obrigado. não sabia desse system ainda.

50 minutos atrás, JorgeGus disse:

@SrJoker Alguns vão dizer que isso acaba prendendo você a um sitema operacional, outros vão dizer que você pode acionar um vírus caso o programa acionado tenha sido trocado por outro. Mas pessoalmente não vejo problema nenhum a título de conhecimento.

system("start arquivo.txt");

A função system() gera uma chamada para o sistema operacional, que no caso do Windows, executa "start arquivo.txt", que por sua vez aciona o programa associado à extensão txt e abre o arquivo.

 

Você até poderia identificar o sistema operacional antes e executar o comando adequado para cada um, mas isso vai depender de cada compilador, ou vai dar um belo trabalho e não ser tão confiável.

Eu estava pensando em trocar o local onde o arquivo e criado pois quando cria o arquivo e criado no diretorio de onde eu quando o arquivo do codigo e gostaria de escolher um diretorio especifico. Poderia me ajudar? 

#include <stdio.h>
#include <string>
#include <fstream>
#include <iostream>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
#include <unistd.h>



using namespace std;


int main ()
{
  //Cria o objeto de arquivo
    ofstream arquivodesaida;

    //Abre o aruivo ou cria caso não exista
    arquivodesaida.open("Texto.txt", std::ios_base::app);

    //Escreve algo
    arquivodesaida << "Ola mundo";

    //Fecha o arquivo
    arquivodesaida.close();

    
    system("start Texto.txt");





 return 0;




}

 

  • Curtir 1
Postado

@SrJoker Você pode indicar um caminho junto ao nome do arquivo, nesse caso seria mais fácil armazenar o nome e o caminho em uma variável.

 

Adicione ou modifique as linhas a seguir no seu programa.

string arquivo = "C:/Teste/Texto.txt";

arquivodesaida.open(arquivo, std::ios_base::app);

system(("start " + arquivo).c_str());

Note que a barra diagonal para separar o nome do arquivo do nome do diretório é no sentido inverso ao normalmente usado no Windows, você pode usar a barra tradicional, mas nesse caso teria que usar barras duplas, já que nesse caso seria necessário "escapar" a barra, se ainda não estiver familiarizado com caracteres de escape, basta procurar no google ou em algum livro.

 

Evite usar espaços ou acentos no nome do arquivo ou no caminho até ele.

 

Você precisa chamar c_str() na string que vai ser passada a system() porque system() espera receber uma constante do tipo char *.

 

 

  • Curtir 1
Postado
22 minutos atrás, JorgeGus disse:

@SrJoker Você pode indicar um caminho junto ao nome do arquivo, nesse caso seria mais fácil armazenar o nome e o caminho em uma variável.

 

Adicione ou modifique as linhas a seguir no seu programa.

string arquivo = "C:/Teste/Texto.txt";

arquivodesaida.open(arquivo, std::ios_base::app);

system(("start " + arquivo).c_str());

Note que a barra diagonal para separar o nome do arquivo do nome do diretório é no sentido inverso ao normalmente usado no Windows, você pode usar a barra tradicional, mas nesse caso teria que usar barras duplas, já que nesse caso seria necessário "escapar" a barra, se ainda não estiver familiarizado com caracteres de escape, basta procurar no google ou em algum livro.

 

Evite usar espaços ou acentos no nome do arquivo ou no caminho até ele.

 

Você precisa chamar c_str() na string que vai ser passada a system() porque system() espera receber uma constante do tipo char *.

 

 

Entendi, Muito obrigado pela ajuda.

  • Obrigado 1
Postado
13 horas atrás, JorgeGus disse:

Mas pessoalmente não vejo problema nenhum a título de conhecimento.

system("start arquivo.txt");

A função system() gera uma chamada para o sistema operacional, que no caso do Windows, executa "start arquivo.txt", que por sua vez aciona o programa associado à extensão txt e abre o arquivo.

 

🤔

 

Já ouvi falar nisso, mas entenda que ao chamar system() não vai autoconhecer nadinha exceto o interpretador de comandos do sistema que está usando.

 

system() nada faz. Apenas pega uma string e manda para o sistema como se você tivesse digitado no terminal. 

 

No caso do exemplo acima, vai funcionar desde que o sistema em questão tenha o comando start , exista o tal arquivo, e esteja registrado no sistema o que fazer com arquivos desse tipo, txt. No Windows em geral vai abrir o programa notepad.exe, mas pode ser qualquer coisa.

 

Você está programando em C++, system() foi escrita em C ou C++, o sistema todo foi escrito em C ou C++. Não há nada que não possa fazer em C++ ou C. E chamar system() ~e quase nada.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!