Ir para conteúdo
Fórum Script Brasil
  • 0

imprimindo o valor ASCII dos caracteres


asantos38

Pergunta

#include <iostream>
#include <fstream>

using namespace std;

int main(){
	ofstream output("Myfile.txt");
	
	output << "Stephen Davis is a nice guy" << endl;
	
	output.close();
	
	ifstream input("Myfile.txt");
	
	while(input.good()){
		cout << input.get();
	}
	
	cout << endl;
	
	input.close();
	
	return 0;	
}

Boa tarde a todos.

Estou com dificuldades para fazer meu programa imprimir uma frase gravada em arquivo. Em vez de imprimir a frase o programa está imprimindo os valores ASCII.

Estou usando o método get() para ler os caracteres, o S.O. é o Ubuntu  e o compilador é g++ versão 6.3.0.

 

 

Editado por asantos38
acrescentar versão do compilador
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá, amigo. Tenho um exercício desse tipo pronto q criei a poucos dias.

Nesse exercício eu carrego uma frase do arquivo, adiciono ela a um vector e depois seleciono uma frase de maneira aleatório. Para poder imprimir de uma forma melhor uma frase, no caso dela ser grande demais e não couber em uma linha, fiz uma pequena formatação

Espero q esse exercício te ajude a conseguir o q você está tentando fazer

 

// Nesse exercício é levado em consideração de que cada frase no arquivo esteja em uma linha
// Também é levado em consideração que o arquivo está no mesmo diretório do arquivo .cpp

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <time.h>
#include <stdlib.h>
using namespace std;



int main()
{
	ifstream textReader; // uso da classe ifstream
	string line; // uso da classe string do C++
	vector<string> frases; // uso da classe vector do C++
	int index;
	string frase;
	
	system("title Frases");
	
	setlocale(LC_ALL, "Portuguese"); // Aqui o idioma é definido para português, para q na frase apareça a devida acentução
		
	srand(time(NULL));
	
	textReader.open("frases.txt", ios::in); // abre o arquivo com o modo de leitura
	
	if (textReader.is_open())
	{
		while (getline(textReader, line))
		{
			frases.insert(frases.end(), line); // aqui cada linha é inserida a variável do tipo vector
		}
		
		textReader.close(); // fecha o arquivo
	}
	
	index = rand() % frases.size();
	
	frase = frases[index];

	int j = 0;
	
	bool impresso = false;
	
	for (int i = 0; i < frase.length(); i++)
	{
		j++;
		if (frase.at(i) == ' ' && j > 100)
		{			
			cout << frase.substr(0, i) << endl;			// aqui uma pequena formatação para inserir uma quebra de linha p frases maiores
			cout << frase.substr(i, frase.length()) << endl;
			impresso = true;
			break;
		}
	}
	if (!impresso)
	{
		cout << " " << frase << endl;
	}
		
	cout << endl;
}

 

Agora um exemplo de arquivo q pode ser usado:

 

// Arquivo frases.txt

 

"Cada sonho que você deixa pra trás, é um pedaço do seu futuro que deixa de existir." (Steve Jobs)
"As pessoas não sabem o que querem, até mostrarmos a elas." (Steve Jobs)
"As pessoas ligam a televisão quando querem desligar o cérebro." (Steve Jobs)
"Concentre-se naquilo que você é bom, delegue todo o resto." (Steve Jobs)
"Se você viver cada dia de sua vida como se fosse o último, um dia você estará certo." (Steve Jobs)
"Seu tempo é limitado, Então não fique vivendo a vida dos outros." (Steve Jobs)
"Não deixe que o ruído da opinião alheia impeça que você escute a sua voz interior." (Steve Jobs)
"Ser feliz sem motivo é a mais autêntica forma de felicidade." (Carlos Drummond de Andrade)
"Só é lutador quem sabe lutar consigo mesmo." (Carlos Drummond de Andrade)
"Como as plantas, a amizade não deve ser muito nem pouco regada." (Carlos Drummond de Andrade)
"A confiança é ato de fé, e esta dispensa raciocínio." (Carlos Drummond de Andrade)
"Não é fácil ter paciência diante dos que a têm em excesso." (Carlos Drummond de Andrade)
"A arte é a auto-expressão lutando para ser absoluta." (Fernando Pessoa)
"Seus clientes mais insatisfeitos são sua melhor fonte de aprendizado." (Bill Gates)
"Todo mundo tem cliente. Só traficante e analista de sistemas é que tem usuário." (Bill Gates)
"É claro que darei computadores aos meus filhos, mas antes terão livros." (Bill Gates)
"A arte começa onde a imitação acaba." (Oscar Wilde)
"A música é o tipo de arte mais perfeita: nunca revela o seu último segredo." (Oscar Wilde)
"A arte é a mentira que nos permite conhecer a verdade." (Pablo Picasso)
"A arte de vencer se aprende nas derrotas." (Simon Bolívar)
"Em arte, procurar não significa nada. O que importa é encontrar." (Pablo Picasso)
"Às vezes a vida vai-te golpear a cabeça com um tijolo. Não percas a fé." (Steve Jobs)
"Inovação distingue entre um líder e um seguidor." (Steve Jobs)
"Que ninguém se engane, só se consegue a simplicidade através de muito trabalho." (Clarice Lispector)
"Terei toda a aparência de quem falhou, e só eu saberei se foi a falha necessária." (Clarice Lispector)

Editado por Visitante
Errei na hora de inserir o código
Link para o comentário
Compartilhar em outros sites

  • 0

Estive olhando melhor o seu código. Ao q parece o q você está fazendo é abrir o arquivo sem passar o modo como deseja q o arquivo seja aberto, se é para escrita ou se é para leitura.

Fiz algumas alterações no seu código p resolver esse ponto. Não testei no Linux, mas creio q deve funcionar tal como no Windows.

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	ofstream textWrite;
	ifstream textReader;
	string line;
	
	textWrite.open("Myfile.txt", ios::out); // abre o arquivo para escrita
	
	textWrite << "Stephen Davis is a nice guy" << endl;
	
	textWrite.close();
	
	textReader.open("Myfile.txt", ios::in); // abre o arquivo para leitura
	
	if (textReader.is_open()) // verifica se o arquivo está aberto
	{
		while (getline(textReader, line)) // com o comando getline() lê linha a linha do arquivo
		{
			cout << line << endl; // imprime a linha lida
		}
		
		textReader.close(); // fecha o arquivo
	}
	
	cout << endl;
	
	return 0;	
}

está funcionando assim.

Se ajudou avisa, ok?

Abração! 

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz. Vou ter q usar de humildade e reconhecer que não conhecia os métodos output e input, Desculpa pelo erro q cometi. Inda tenho muito o q aprender em C++ mesmo

O problema mesmo no seu código está na leitura do arquivo. Usei uma variável auxiliar do tipo string e com o mesmo comando getline() faço a leitura linha a linha do arquivo.

Seu exercício ficaria assim:

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main()
{
	string line;
	
	ofstream output("Myfile.txt");
	
	output << "Stephen Davis is a nice guy" << endl;
	
	output.close();
	
	ifstream input("Myfile.txt");
	
	if (input.is_open())
	{
		while (getline(input, line))
		{
			cout << line << endl;
		}
		
		input.close();
	}
	
	cout << endl;
	
	return 0;	
}

Desculpa pela minha ignorância em desconhecer os métodos output e input. Inda não havia estudado sobre isso

 

"Só erra quem faz!"

"Só erra quem faz!"

Link para o comentário
Compartilhar em outros sites

  • 0

Estive olhando na documentação do C++ e na verdade a questão é que da forma q você fez o exercício é uma maneira diferente de se abrir um arquivo. Peguei um pequeno exemplo do site CPlusPlus q usa essa abordagem para se abrir um arquivo.

ficaria assim o exemplo q pequei com algumas alterações:

 

// basic file operations
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
	
	string line;
	
	ofstream myfile("example.txt");	
    
	myfile << "Writing this to a file.\n";
    
	myfile.close();
          
	ifstream myFileReader("example.txt");
  
    if (myFileReader.is_open())
    {
  		while (getline(myFileReader, line))
  		{
  			cout << line << endl;
		}
		
		myFileReader.close();
    }
    
    cout << endl;
  
    return 0;
}

Não é questão dos métodos output e input. São apenas nomes dados as variáveis do tipo ofstream e ifstream, respectivamente. É apenas uma maneira que não conhecia para se abrir um arquivo.

Resumindo... Acabei aprendendo algo novo com isso!   \o/ 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...