Dúvida Difícil, querendo converter int para const char [RESOLVIDO]

1. Dúvida Difícil, querendo converter int para const char [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 25/06/2020 - 17:33h

Eu tenho o seguinte código e não estou feliz com ele, isso porque eu não quero ter a variável Text
std::string Text;
for(int Caracter; (Caracter = MyFile.get()) != EOF; Text += Caracter);
EdSynonyms->value(Text.c_str());

Eu gostaria do meu código assim, mas não estou conseguindo fazer funcionar pelos motivos abaixo!
for(int Caracter; (Caracter = MyFile.get()) != EOF; EdSynonyms->append(Caracter)); 

Syntax: EdSynonyms->append( const char* )
Eu não estou conseguindo de forma alguma converter int para const char* tudo que tentei deu errado!
EdSynonyms->append(Caracter); // error: invalid conversion from ‘int’ to ‘const char*’
EdSynonyms->append(const_cast<const char*>(Caracter)); // error: invalid const_cast from type ‘int’ to type ‘const char*’
EdSynonyms->append(const_cast<const char*>((char)Caracter)); // error: invalid const_cast from type ‘char’ to type ‘const char*’

EdSynonyms->append((char)Caracter); // error: invalid conversion from ‘char’ to ‘const char*’
EdSynonyms->append((const char)Caracter); // error: invalid conversion from ‘char’ to ‘const char*’
EdSynonyms->append((const char*)Caracter); // error: cast to pointer from integer of different size
EdSynonyms->append((const char)(char)Caracter); // error: invalid conversion from ‘char’ to ‘const char*’

EdSynonyms->append(Caracter.c_str()); // error: request for member ‘c_str’ in ‘Caracter’, which is of non-class type ‘int’
EdSynonyms->append((const char)Caracter.c_str()); // error: request for member ‘c_str’ in ‘Caracter’, which is of non-class type ‘int’

Se alguém souber converter o int para const char* ou mesmo um método que eu possa colocar dentro de EdSynonyms->append() eu agradeceria!
OBS MUITO, MUITO IMPORTANTE Como informo na primeira linha da pergunta! Eu quero REMOVER variável e comandos! Não quero adicionar um comando a mais. O Código tem 3 linhas, se não estou feliz com 3 linhas, não ficarei feliz se ele tiver 4.

Porque justamente o que está muito me incomodando é não conseguir colocar um int no espaço de um const char* porque acho que eu deveria saber fazer isso sem usar sprintf por exemplo. A não ser que de verdade não exista em C++ formas de converter um int para const char*. É que no momento o que eu penso é que eu não estou sabendo fazer isso corretamente!


  


2. MELHOR RESPOSTA

Heitor Costa
Heitor.rj

(usa Slackware)

Enviado em 25/06/2020 - 19:07h

Fiz algumas modificações para seu código funcionar:
for(std::string Caracter; Caracter = MyFile.get(), !MyFile.eof(); EdSynonyms->append(Caracter.c_str())); 


3. Re: Dúvida Difícil, querendo converter int para const char [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 25/06/2020 - 20:38h

Heitor.rj escreveu:
Fiz algumas modificações para seu código funcionar:
for(std::string Caracter; Caracter = MyFile.get(), !MyFile.eof(); EdSynonyms->append(Caracter.c_str())); 

Perfeito! Tudo em uma linha, ficou ótimo. Obrigado!


4. Re: Dúvida Difícil, querendo converter int para const char [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/06/2020 - 04:16h

Se for para minimizar a quantidade de operações feitas explicitamente por você, e a função-membro value() (não sei a que classe pertence) aceitar receber uma referência a std::string como argumento (se for referência para rvalue, então, melhor ainda, por evitar ainda mias uma cópia de strings), então isto basta.
EdSynonyms->value(dynamic_cast<ostringstream &>(ostringstream() << MyFile.rdbuf()).str()); 


Se você tiver de usar um ponteiro para caracteres, a variação abaixo serve.
EdSynonyms->value(dynamic_cast<ostringstream &>(ostringstream() << MyFile.rdbuf()).str().c_str()); 



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts