2008-11-10 7 views
2

Y at-il une valeur ASCII que je peux mettre dans un char en C++, cela ne représente rien? J'ai essayé 0 mais il finit par visser mon fichier donc je ne peux pas le lire.Valeur ASCII pour rien

Répondre

1

Le caractère nul '\ 0' prend toujours un octet. Votre logiciel reconnaît-il le caractère nul en tant que caractère de fin de fichier?

Si votre logiciel lit ce fichier, vous pouvez définir un caractère d'espace réservé (un caractère différent de celui des données), mais vous devrez également gérer ce caractère. Comme dans, dites '*' est votre place-titulaire. Vous allez lire dans le caractère mais ne pas l'ajouter à la structure qui stocke vos données. Cela prendra encore de la place dans votre fichier, mais cela ne prendra pas de place dans votre structure de données.

Est-ce que je réponds à votre question ou la manque?

1

Voulez-vous dire une valeur que vous pouvez écrire et qui ne changera pas réellement le fichier? La réponse est no. Peut-être publier un peu plus sur ce que vous essayez d'accomplir.

0

cela dépend du type de fichier et de l'analyse.

3

Bien sûr. Utilisez n'importe quelle valeur de caractère qui n'apparaîtra pas dans vos données régulières. Ceci est communément appelé un fichier texte délimité. Les choix les plus courants pour les délimiteurs incluent les espaces, les tabulations, les virgules, les points-virgules, les caractères à barres verticales et le tilde.

6

ASCII 0 est null. A part ça, il n'y a pas de caractères "rien" en ASCII traditionnel. Le cas échéant, vous pouvez utiliser un caractère de contrôle tel que SOH (début du titre), STX (début du texte) ou ETX (fin du texte). Leurs valeurs ASCII sont respectivement 1, 2 et 3.

Pour la liste complète des codes ASCII que j'ai utilisé pour cette explication, voir this site

3

Dans un fichier source C++, '\ 0' représente un 0 octet. Cependant, les chaînes C++ sont généralement terminées par un caractère nul, ce qui signifie que '\ 0' représente la fin de la chaîne - ce qui peut être ce qui gâche votre fichier.

Si vous voulez vraiment stocker un 0 octet dans un fichier de données, vous devez utiliser un autre codage. Une version simpliste utiliserait un autre caractère - 0xFF, par exemple - qui n'apparaît pas dans vos données, ou un format de longueur/données ou quelque chose de similaire. Quel que soit le codage que vous choisissez d'utiliser, l'application qui écrit le fichier et celle qui le lit doivent s'accorder sur l'encodage. Et c'est un tout nouveau cauchemar.