63 votes

"Trop de caractères dans l'erreur littérale de caractère"

Je me débats avec un morceau de code et j'obtiens l'erreur suivante :

Trop de caractères dans l'erreur de littéral de caractère

J'utilise C# et l'instruction switch pour itérer dans un tampon de chaîne et lire les tokens, mais j'obtiens l'erreur dans cette ligne :

cas '&&' :

cas '||' :

cas '==' :

Comment puis-je garder le == y && comme un personnage ?

119voto

Grant Thomas Points 28280

En effet, en C#, les guillemets simples ( '' ) désignent (ou encapsulent) un seul caractère, tandis que les guillemets doubles ( "" ) sont utilisés pour une chaîne de caractères. Par exemple :

var myChar = '=';

var myString = "==";

7voto

Only Bolivian Here Points 8199

Voici un exemple :

char myChar = '|';
string myString = "||";

Les caractères sont délimités par des guillemets simples, et les chaînes de caractères par des guillemets doubles.

La bonne nouvelle est que les instructions de commutation C# fonctionnent avec les chaînes de caractères !

switch (mytoken)
{
    case "==":
        //Something here.
        break;
    default:
        //Handle when no token is found.
        break;
}

2voto

driis Points 70872

Vous ne pouvez pas traiter == o || comme des chars, puisqu'il ne s'agit pas de chars, mais d'une séquence de chars.

Vous pourriez faire en sorte que votre switch... case fonctionne sur les cordes à la place.

2voto

BrokenGlass Points 91618

Un caractère ne peut contenir qu'un seul caractère, un caractère littéral est un caractère unique entre guillemets, par exemple '&' - si vous avez plus d'un caractère, vous voulez utiliser une chaîne de caractères, pour cela vous devez utiliser des guillemets doubles :

case "&&":

1voto

Abe Miessler Points 34869

Je crois que vous pouvez le faire en utilisant un encodage Unicode, mais je doute que ce soit ce que vous voulez vraiment.

El == est la valeur unicode 2A76 donc je pense que vous pouvez le faire :

char c = '\u2A76';

Je ne peux pas le tester pour le moment mais je serais intéressé de savoir si cela fonctionne pour vous.

Vous devrez creuser pour trouver les autres. Voici une table d'unicode si vous voulez regarder :

http://www.tamasoft.co.jp/en/general-info/unicode.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X