Página 1 de 1

Existe outra maneira de declarar uma String sem " " ?

MensagemEnviado: 24 Jun 2017 07:57
por andre_luis
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 ?

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

MensagemEnviado: 24 Jun 2017 08:23
por eletroinf
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

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

MensagemEnviado: 25 Jun 2017 08:00
por andre_luis
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.

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

MensagemEnviado: 25 Jun 2017 19:48
por Red Neck Guy
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;

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

MensagemEnviado: 26 Jun 2017 07:42
por tcpipchip
o pessoal usa muito o \" por causa dos comandos AT que tem comandos com "

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

MensagemEnviado: 26 Jun 2017 09:21
por andre_luis
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.

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

MensagemEnviado: 26 Jun 2017 11:12
por pamv
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 "

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

MensagemEnviado: 26 Jun 2017 11:17
por barboza
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 + ' ');


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

MensagemEnviado: 26 Jun 2017 11:55
por andre_luis
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.