Accueil > Forum > > > > String vers structure de char
String vers structure de char
mardi 14 février 2006 à 12:54:17 |
String vers structure de char

nico_fip1
|
Bonjour, Mon objectif est de gérer fichier texte formaté: Ce fichier contient des enregistrements composé d'une suite de 60 caractères. Mon but est de passer d'une chaine à une structure, dont bien sûr le format global est le même. Exemple struct MaStruct { char info1 ; char info2 ; char info3 ; char info4 ; }
_____________________ string MaChaine="azer" ; MaStruct(=)MaChaine ;
En C++ 6, j'utilisait "memcpy" et ça marchait nickel....lol Merci d'avance Remarque : Le format peut bouger, donc pas envie de passer par MaStruct.info1=MaCaine.SubString(0,1) ; ..... ......
NicoStrasbourg France
|
|
mardi 14 février 2006 à 13:28:16 |
Re : String vers structure de char

coq
|
Salut,
Qu'est ce que tu entends au juste par "le format peut bouger" ?
/* coq MVP Visual C# */
|
|
mardi 14 février 2006 à 13:36:04 |
Re : String vers structure de char

Lutinore
|
Salut, utilise l'opérateur d'indexation [ ] sur ta chaine pour construire ta structure, non !?
|
|
mardi 14 février 2006 à 13:52:56 |
Re : String vers structure de char

nico_fip1
|
En fait, chaque caractère représente une donnée. Pour la suite du traitement, il est beaucoup plus simple d'utiliser MaStructure.Info1 que MaChaine.SubString(0,1) Et si je change la signification d'une info, Il suffit de modifier le nom dans la définition de ma structure. Concernant l'opérateur d'indexation, écrire 60 fois MaStructure.Info1 = MaChaine.SubString(0,1) ; MaStructure.Info2 = MaChaine.SubString(11) ; MaStructure.Info3 = MaChaine.SubString(2,1) ; ..........
C'est un peu lourd, alors qu'il sufit de convertir une chaine de N caractères, en une structure composée de N caractères.
Ca pb va aussi se poser pour les champs de bits. Conversion d'un nombre en une suite de champs de bit. En clair, l'idée est de "caster" un string, ou un tableau de char, en une structure qui contient les mêmes données ; ou caster un nombre "byte" en une structure de N bits.
Ce que je peux dire, c'est qu'en C simple, je n'avais aucun pb.... un memcpy(...) faisait l'affaire .... Donc j'espère qu'en C# c'est aussi faisable !!
Merci beaucoup
Nico Strasbourg France
|
|
mardi 14 février 2006 à 15:07:55 |
Re : String vers structure de char

Lutinore
|
Je pense qu'il n'ya pas d'équivalent en code managé.
( tu peux aussi fixer ta chaine en mémoire pour travailler avec un pointeur sur ta chaine. )
// Attention au dépassement !!
string s = "ABCD"; MyStruct m = new MyStruct( );
unsafe { char* p = ( char* )&m; for ( int i = 0; i < s.Length; i++ ) { p[ i ] = s[ i ]; } }
|
|
mardi 14 février 2006 à 15:29:36 |
Re : String vers structure de char

nico_fip1
|
Salut Lutinore... Merci pour ta réponse qui me semble pas male. Peux-tu juste me donner des explications, ou un lien, concernant "unsafe" ? Etant un habitué du bon vieux ANSI C, ça me parait intéressant d'inclure ce type de bout de code... Question dépassement, je sais faire gaffe. J'ai eu assez de "core dump" dans ma jeunesse  Eh oui, à la base, je suis électronicien, donc le bas niveau, j'aime bien ça... lol Merci encore et à + P.S : Je n'irai quand même pas jusqu'à l'assembleur NicoStrasbourg France
|
|
mardi 14 février 2006 à 15:52:43 |
Re : String vers structure de char

coq
|
Donc si j'ai bien saisis, tu veux que si du jour au lendemain tu changes
struct MaStruct { public char info1 ; public char info2 ; public char info3 ; public char info4 ; }
en
struct MaStruct { public char info1 ; public char info2 ; public char info3 ; public char info4 ; public char info5 ; }
ce soit suffisant pour se mettre à gérer les chaînes de 5 caractères ?
/* coq MVP Visual C# */
|
|
mardi 14 février 2006 à 16:01:10 |
Re : String vers structure de char

Lutinore
|
Tu peux utiliser les pointeurs dans du code unsafe, suffit de déclarer la classe, la méthode ou juste un bloc unsafe et de compiler avec l'option unsafe ( Projet->Propriété ) ou -unsafe avec csc.exe. Comme la GC peut deplacer les objets en mémoire faut utiliser le mot clé fixed, sauf là vu que j'utilise un type valeur qui est sur la pile, de toute façon le compilo te previens. [ Lien ]Attention quand même avec les chaines ( extrait MSDN ) : "un caractère Unicode peut être représenté par plusieurs Char."
|
|
mardi 14 février 2006 à 18:04:46 |
Re : String vers structure de char

nico_fip1
|
Coq : Non pas vraiment...
Si Info1 devient Dupont1 ... C'est qu'une histoire de noms
Mais en fait, c'est surtout pour simplifier la copie. Comme j'ai dit, un "memcpy" en "ANSI C" est très simple ; et on est très proche du matériel.
Pour moi, il suffirait de "caster" : les données sont les mêmes. C'est juste un autre packaging. C'est comme si tu passes d'un byte, à une structure de 8 bits. c'est beaucoup plus simple à manipuler, et les infos sont exactement les mêmes.
Nico Strasbourg France
|
|
mardi 14 février 2006 à 19:42:45 |
Re : String vers structure de char

coq
|
J'avoue que j'ai du mal à saisir le truc là. Pour moi l'autre type naturel d'une chaîne de caractères est un tableau de caractères, pas une structure de caractères.
Si tu veux éviter de multiplier les MaStructure.Info1 = MaChaine.SubString(0,1) ; MaStructure.Info2 = MaChaine.SubString(1,1) ; MaStructure.Info3 = MaChaine.SubString(2,1) ; .......... à chaque utilisation de ta structure dans le code, donne lui un constructeur : struct MaStruct { public MaStruct(string str) { this.info1 = str[0]; this.info2 = str[1]; this.info3 = str[2]; this.info4 = str[3]; }
public char info1; public char info2; public char info3; public char info4; }
D'ailleurs à ce sujet je vais me permettre d'insister sur le point indiqué par Lutinore, l'utilisation de l'indexeur de la structure string. MaChaine.SubString(0,1) ; devient MaChaine[0] ; et devient dont plus court que MaStructure.Info1
Et si tu veux travailler "directement" avec le tableau de caractères, utilise la méthode String.ToCharArray
/* coq MVP Visual C# */
|
|
Cette discussion est classée dans : fichier, string, passer, char, structure
Répondre à ce message
Sujets en rapport avec ce message
String et Char[], probleme de caracteres [ par Shouwi ]
Hello, aprés moultes recherches et essais, je n'arrive pas a faire ce que je veux :\Je veux lire un fichier, style ASCII ART, donc avec des caracteres
String manipulation -> char [ par abdoulax ]
Je suis encore un newb en c# et je bloque sur un truc tout con. En fait je voudrai faire un truc similaire au C : string test = "yep"; test[1] = 'a';
convertir un string en color [ par godefrw ]
Bonjour, j'aurais besoin de convertir un string (lu dans un fichier xml), en color (system.drawing.color). cela me permettrait de pouvoir définir la c
Lecture fichier binaire et conversion hexa --> string [ par kineton ]
Bonjour à tous, Je suis développeur en vc++ 6.0 et je commence juste à programmer en C# avec VS.Net.Je cherche à lire un fichier binaire qui contient
nom de fichier [ par GaTaca ]
bonjour a tous, voila je voudrais isoler le nom de fichier a partir d'une chaine contenant le chemin complet du fichierj'ai essayé string path;string[
int (ASCII) to char (ou string) [ par JuS ]
Bonjour amis développeurs cshapriens,Je cherche à récupérer le caractère correspondant à un code ASCII.Comment faire ???//code ASCII du "A"int code =
Conversion String en Char [ par CyKloNe ]
Bonjour,Voila je démarre en C# et je dois faire une appli de formatage de fichier, qui lit des fichiers délimité en entrée. Je doit donc utiliser spli
Convertire Char[] > String [ par welc ]
Hello,J'ai un char[260] qui contient un chemin de répertoir. Donc pour le convertire je procéde ainsi :String monString;monString = System.Text.Encodi
Début difficile en C# [ par PsyCaDi ]
Bonjour,Je viens de passer du VB6 au C# et j'ai pas mal de problèmes!Surtout en ce qui concerne les conversions.Voilà, je voudrais faire:Conversion d'
conversion de char* en C# [ par gwenn035 ]
Bonjour à tous, je debute en C# et en Cpp (je suis plutot Java pour le moment) et j'ai fais une dll en vc++ qui contient une procedure qui a 4 paramèt
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|