2010-12-04 6 views
1

Je suis simplement curieux du titre.Pourquoi n d'un fichier ini ne fonctionne pas?

String a = "abc\ndef"; 
Console.Writeline(a); 

La sortie est

abc 
def 

Je stocké cette valeur dans un fichier ini et récupéré à partir de là.

ini.iniwritevalue("a", "a", a); 
string b = ini.inireadvalue("a", "a"); 

Puis je l'ai montré sur la console. Le résultat est le suivant:

abc\ndef 

Pourquoi \n ne fonctionne pas après avoir récupéré à partir du fichier ini?

P.S. J'ai un fichier ini.dll. Notre société utilise cette DLL pour lire et écrire des fichiers ini.

+0

Comment suis-je censé donner une réponse puisque les 3 réponses sont correctes? – william

+0

Vous pouvez marquer comme la réponse correcte celle qui vous a le plus aidé. –

Répondre

3

L'interprétation du code d'échappement \ n dans votre code source se fait par le compilateur lors de l'analyse du fichier source.

Si vous venez de lire dans un fichier comme "données" au moment de l'exécution, aucune interprétation de ce type ne se produira nécessairement.

Vous devrez peut-être trouver ou écrire une fonction qui prend une chaîne contenant des séquences d'échappement et les convertit en valeurs binaires (\ n devient généralement 0x0a)

1

Vous devez échapper à la barre lorsque vous écrivez la valeur, comme ceci:

abc\\ndef 
3

En effet, \n en C# est pas seulement un \ et un n, mais une séquence d'échappement avec une signification particulière. \n est considéré comme un seul caractère et est une fin de ligne. Vous ne l'obtiendrez pas lorsque vous lisez simplement un \ et un n à partir d'un fichier.

Eventuellement, vous avez lu \\n à partir de là. \\ est également une séquence d'échappement qui signifie le caractère \. Tout ce que vous avez à faire est de remplacer \\n par \n, et tout ira bien.

string s = ... //get the value 
s = s.Replace("\\n", "\n"); 
Questions connexes