Entrar    Registrar

Existe outra maneira de declarar uma String sem " " ?

Fórum sobre plataforma Arduino

Moderadores: andre_teprom, guest2003, 51, Renie

  • Autor
    Mensagem

Existe outra maneira de declarar uma String sem " " ?

Mensagempor andre_teprom » 24 Jun 2017 07:57

Pessoal,


Tentei declarar a seguinte sequencia de caracteres, com o seguinte comando:
Código: Selecionar todos
const String subtable= " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"


Porém, como o caractere " aparece antes do final do texto, isso gera um erro de compilação. Sei que eu poderia separar a string acima em partes e ir somando o que vem antes e depois ao caractere ", mas isso tornaria o codigo menos inteligivel. Existe alguma maneira decente de fazer a declaração dessa string acima ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5082
Registrado em: 11 Out 2006 18:27
Localização: Portugal

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor eletroinf » 24 Jun 2017 08:23

Escape sequence ou algo do tipo, coloca uma contra-barra antes do caractere especial.

Exemplo:

char z[] = "abc\" 477";

Veja um pouco mais no link abaixo:
http://en.cppreference.com/w/cpp/language/escape
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 654
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor andre_teprom » 25 Jun 2017 08:00

Bacana, havia me esquecido desse recurso, mas acredito que isso vai alterar o resultado do método .length(), já que estarei adicionando mais caracteres ao array. Outra coisa é que talvez eu tenha de colocar um caractere de escape não apenas antes do aspas " como também antes da própria barra \ que também está presente na tabela.

Enfim, vou testar; obrigado pela dica.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5082
Registrado em: 11 Out 2006 18:27
Localização: Portugal

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor Aquino » 25 Jun 2017 19:48

Acho que não, pois o \" e outros, na verdade são códigos da tabela ASCII.
Em alguns compiladores, é possível fazer algo do tipo: char my_string[] = #minha string;
"...People who are really serious about software should make their own hardware..." Alan Kay
Avatar do usuário
Aquino
Dword
 
Mensagens: 1646
Registrado em: 12 Out 2006 22:24

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor tcpipchip » 26 Jun 2017 07:42

o pessoal usa muito o \" por causa dos comandos AT que tem comandos com "
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 5416
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor andre_teprom » 26 Jun 2017 09:21

Aquino escreveu:Em alguns compiladores, é possível fazer algo do tipo: char my_string[] = #minha string;


Poisé, o problema é que no texto acima minha string iria conter não apenas caracteres alfanuméricos, mas também de controle de string, que no final das contas o compilador iria interpretar como delimitadores ou escape.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5082
Registrado em: 11 Out 2006 18:27
Localização: Portugal

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor pamv » 26 Jun 2017 11:12

andre_teprom escreveu:
Aquino escreveu:Em alguns compiladores, é possível fazer algo do tipo: char my_string[] = #minha string;


Poisé, o problema é que no texto acima minha string iria conter não apenas caracteres alfanuméricos, mas também de controle de string, que no final das contas o compilador iria interpretar como delimitadores ou escape.


André
O compilador não passa o escape para código, o escape apenas sinaliza que o caracter seguinte não deve ser interpretado como delimitador. Faça um teste: compile com -S usando escape e veja no fonte em assembler o que aconteceu.
Para
c='\"'
o resultado é

.global c
.data
.type c, %object
.size c, 1
c:
.byte 34

34 é o código ascii de "
pamv
Byte
 
Mensagens: 339
Registrado em: 20 Jun 2016 21:47

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor barboza » 26 Jun 2017 11:17

andre_teprom escreveu:
Código: Selecionar todos
const String subtable= " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"




Outra maneira pra resolver sua "string" é só usando os valores da tabela ASCII, já que sua string é um subset da tabela ascii.


Código: Selecionar todos
x = subtable[i];

é igual a

x = (i + 0x20);

ou

x = (i + 32);

ou

x = (i + ' ');

Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 933
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Re: Existe outra maneira de declarar uma String sem " " ?

Mensagempor andre_teprom » 26 Jun 2017 11:55

pamv escreveu:André
O compilador não passa o escape para código, o escape apenas sinaliza que o caracter seguinte não deve ser interpretado como delimitador.


Ok, obrigado pela confirmação, vou fazer desse modo então, usando o escape na tabela.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5082
Registrado em: 11 Out 2006 18:27
Localização: Portugal

Voltar para ARDUINO

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante