| |||||
FORUM HardWare.fr

Programmation

[C++ Builder] Les != types de chaînes (string, AnsiString, char, etc..| Dernière réponse | |
|---|---|
| Sujet : [C++ Builder] Les != types de chaînes (string, AnsiString, char, etc.. | |
| antp | juste, j'avais oublié ça :jap: |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| antp | juste, j'avais oublié ça :jap: |
| BENB |
|
| antp | bhen char chaine3[]; il ne connait pas la taille du tableau
et tu dis que tu peux l'initialiser juste après, moi ça me paraît quand même bizarre et risqué :/ [jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo] |
| juju_le_barbare | Salut,
si bien sûr j'ai testé, et la méthode 5 marche ! J'ai créé le pointeur, puis je l'ai initialsé juste après !!! (n'oublie pas c'est du C++, pas du C !) ce qui m'intriguait surtout c'était la 3. Donc tu dis que le fait de mettre un mot complet entre guillemet sert à mettre un '\0' automatiquement à la fin...OK Quelle est la != entre char chaine3[] = "calc"; et char chaine3[]; chaine3 = "calc"; //marche pas ! pq ? @++ |
| antp |
|
| juju_le_barbare | merci c'est bon je pense avoir totalement assimilé tout ça ...
encore une question : Bonjour, Quel est l'intérêt d'utiliser un pointeur pour créer une chaîne de caractères ? A part pour les API ... Et donc quelle sont les différences entre ces 5 méthodes ? Celle qui m'intrigue (mais pourquoi ça marche ???) est la 3 eme, puisque chaine3[] est de type char, qui ne peut contenir que un chiffre ('c', par ex), or je met un mot entre guillemets et ça marche !!! La 4 aussi d'ailleurs, j'ai lu qu'il n'y a pas de type chaîne en C++. Donc à part avec l'utilisation de string.h et de son strcpy(); , je comprends pas pourquoi le fait de mettre un mot en entier entre guillemets marche ! Oui je sais je suis chiant depuis 2 jours avec ce style de question sur les chaînes en C++, mais ça me trotte vraiment, j'utilise sans connaître à fond et ça m'énerve !!! :cry: :cry: :cry: :cry: //méthode1 char chaine1[] = {'c', 'a', 'l', 'c', '\0'}; //OK là je comprends bien c'est évident //méthode2 char chaine2[5]; strcpy(chaine2, "calc" ); //OK là je comprends bien c'est évident //méthode3 char chaine3[] = "calc"; // Mmmmhhh !!!! Mystérieux ! //méthode4 char *chaine4 = "calc"; // Mmmmhhh !!!! Mystérieux ! //méthode5 char *chaine5; chaine5 = "calc"; // Oui je sais c'est comme la 4, on est d'accord ! //On s'amuse comme on peut... ShellExecute(Handle, NULL, chaine1, NULL, NULL, SW_SHOW); ShellExecute(Handle, NULL, chaine2, NULL, NULL, SW_SHOW); ShellExecute(Handle, NULL, chaine3, NULL, NULL, SW_SHOW); ShellExecute(Handle, NULL, chaine4, NULL, NULL, SW_SHOW); ShellExecute(Handle, NULL, chaine5, NULL, NULL, SW_SHOW); J'ai pas trouvé non plus comment mettre une pause dans le programme... :hello: |
| antp | c'est très bien :jap:
STL c'est du vrai C++, tu retrouves ça un peu partout, sur toutes les plateformes normalement... AnsiString c'est un truc de Borland, tout comme VCL/CLX CString c'est un truc de Microsoft, tout comme MFC j'ai l'impression de me répéter là, mais que dire de plus :??: |
| juju_le_barbare | Salut legreg,
non en fait je sais je suis pas clair mais je m'explique : Je veux faire en effet du vrai C++, mais ça me dérange pas de faire aussi du visuel, à condition de bien séparer les 2 aspects de la programmation. Quand j'utilise une fonction, etc... qui n'est pas du vrai C++, que je le sache ! Faire bien la distinction entre le C++ et le visuel, donc ! Comme ça lorsque je veux faire des applis consoles, ou bien sous nunux non-graphique, je suis pas perdu (pas de réactions du style : "merde le type AnsiString marche pas !!!!" ). Voilà mais à notre époque c'est de plus en plus dur. Tu sais je suis juste en terminale, je suis un gamin d'à peine 18 ans ! à l'école on commence à apprendre le VB !!! Tu vois un peu l'horreur, je préfère commencer par apprendre moi -même à programmer avec un vrai langage (Pascal, C++), puis ensuite faire du visuel, en faisant bien la distinction. C'est ce que j'essaye de faire, j'ai achté par ex un livre sur le C++, et non le C++ Builder... Malheureusement à notre époque j'ai l'impression qu'on mélange tout, comme si le visuel était de la progra :cry: :cry: :cry: Je sais pas si t'as compris car mon esprit est un peu tordu %-) @+ |
| LeGreg | STL c'est à 100% la norme C++
seul probleme parfois les implantations sont incompatibles d'un vendeur a l'autre et certaines ne respectent pas a 100% la norme. Parfois le format de chaine est suggere par le type de librairie que tu utilises. Si tu utilises VCL pour gerer l'affichage il est probable que tu seras tente d'utiliser le type chaine de Borland, sachant que le passage de l'une a l'autre n'est pas forcement immediat. Si tu veux faire du vrai C++, laisse tomber l'affichage graphique (tout ce qui est affichage est soit platform-dependant soit vendor-dependant) A+ LEGREG |
| juju_le_barbare | Salut,
Donc si j'éai bien compris, la VCL c'est du pur Borland, donc somme toute peut portable (oui je sais ya kylix, mais bon ...), et AnsiString fait partie de cette VCL, alors que la STL est plus portable, string en fait partie, c'est ça ??? Que veut dire STL ? Comment différencier les fonctions de la STL et celles de la VCL ? Ya la STL sous nunux ? :jap: |
| antp | je vois pas pourquoi tu devais refaire un autre topic :non: http://forum.hardware.fr/forum2.ph [...] p=1&trash= sinon si tu veux absolument un truc multiplateformes c'est soit les char *, soit la classe string de la STL mais si tu utilises des fonctions de Borland ou les objets de la VCL, autant aussi utiliser les AnsiString. |
| juju_le_barbare | Bonjour, j'ai fais un topic hier qui ressemble à celui-ci, mais j'en refais un autre un peu différend. Là j'azimerais que vous me donniez votre avis :
Quel est le type de chaîne de cara (mail ... non pas drôle :-() qu'il vaut mieux utiliser, j'aimerais rester le plus possible dans du vrai C++. Il me semble que AnsiString est propre à Borland, je suis donc obligé de l'utiliser pour récupérer le contenu d'un Edit par ex (Edit1->Text), mais sinon le type string est-il plus portable(je pense notamment à nunux). Quelle est la différence avec AnsiString. Aussi pour les API, souvent sont demandées des pointeur vers du type char. Comment utiliser au mieux ce type SVP ??? Voilà c'était tout, merci de vos réponses... En attendant je vais faire une recherche sur le forum pour essayer de grapiller des réponses, mais ça va être dur ! :hello: |


