OVH Cloud OVH Cloud

au sujet d un acces curieux a un string ...

156 réponses
Avatar
ricky
bonjour

j ai de nouveau un chtti truc etrange !

je fais quelquechose comme :
int main()
{
string pattern;
...
cout << "entrez le pattern";
cin >> pattern;
cin.get(); // pour virer le enter du buffer pour apres

balayage cache
recherche du pattern
affochage
}

ok tout marche super

je rajoute juste un truc :
...
cin.get();

cout << pattern[0];
...

donc juste un affichage du premier caractere, un truc bien neutre quoi

et la , la recherche echoue et donne 0 resultats !!!

quelque soit le code de recherche, en quoi le simple fait d afficher le
premier caractere d une string peut il changer quoique ce soit ?????

une idee ? :-)

@+
ricky... je sais pas si les reveillons me reussissent moi :)

10 réponses

Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| Gabriel Dos Reis wrote:
| > Marc Boyer writes:
| >| Ta question était ironique, ou moqueuse.
| >
| > Non. C'était une question pour aider à trouver une logique dans ton
| > argumentation.
|
| Quelle logique ?

J'avais supposé que ton argumentation avait une logique sous-jacente.
Mais s'il n'y a pas alors je comprends mieux.


On se répette un peu.
Premier argument (invalidé depuis): C++ est un langage, pas
un système complet.
Second (que tu n'évalues pas de la même façon): mieux
vaut pas de GUI qu'une mauvaise GUI.
Troisième: C++ veut être implémentable demain, pas
dans 5 ans. Tu penses qu'une GUI n'est pas un problème.
OK.

| Que quand j'ai écris que je pensais
| que c'était une mauvaise idée d'avoir une GUI en C++,
| j'avais un avis différent de celui de BS, et que ça
| devait me faire revoir mes arguments ? Oui,
| sans aucun doute.

Là je ne te suis plus. D'abord, il n'y a aucune obligation à être
d'accord avec tout ce que dit BS.


Disons que souvent, quand je vois que le résultat de mon
raisonnement donne autre chose qu'un expert du domaine,
je regarde si j'ai pas fait une erreur de calcul en route.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| Il me semblait (impression, subjective) que C++
| s'était centré sur la partie "calcul", en se donnant
| des interfaces minimales d'entrée/sortie (flux)
| et la possibilité de se lier avec d'autres codes (extern).

C++ a été conçu comme un outil (qui se trouve être un langage de
programmation), mais surtout un outil pragmatique. En particulier, il
n'y a pas une distinction académique religieuse entre bibliothèque et
« core language ».


Voui, mais c'est la volonté de ne pas restreindre la bibliothèque
à la partie "calcul" que j'avais ratée.

| Voilà, je suis surpris (en fait, j'étais quand tu m'as
| donné la ref à la FAQ de BS, maintenant, la surprise est
| passée) de voir apparaître un intérêt plus spécifique
| pour les GUI (1) que pour les répertoires, les bases de
| donnée ou les connexions réseaux.

Si tu penses que les connexions réseaux posent un problème qui doit
être résolu, soumets une proposition (cela demande un investissement)
ou fait une suggestion (cela ne coûte rien).


Non, je pensais que l'interfacage entre la partie calcul
et la partie réseau d'un programme étaite de même nature
qu'entre la partie calcul et l'IHM, donc un problème qui
n'était pas du domaine que c'était donné C++.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| Néanmoins, que le code d'implémentation ne soit
| par portable me semble rendre plus difficile la réalisation
| de compilateur multiplateforme. Non ?

La norme ne requiert pas un compilateur multiplateforme, ne dit pas
comment un tel compilateur doit être implémenté, ni que la
bibliothèque standard soit écrit en C++, et a fortiori que son code
d'implémentation soit portable. Donc, que le code d'implémentation
soit portable ou non importe peu.

Veux-tu banir le support des fichiers au prétexte que son code
d'implémentation n'est pas portable ?


Non, mais si son code d'implémentation devait être trop
difficile, oui.

On ne met pas quelque chose dans la bibliothèque standard juste parce
que son code d'implémentation est portable. En fait, un argument
sérieux pour mettre quelque chose dans la bibliothèque, c'est
justement parce que son code d'implémentation n'est pas portable.
Je crois que tu as mis les choses à l'envers.


Non, j'essaye, peut-être avec une mauvaise fonction
d'évaluation, d'évaluer le cout et la faisabilité d'une
GUI normalisée.
Il me semble avoir lu dans le DnE un passage ou BS
dit qu'un des objectif, c'est que C++ soit disponible,
pas juste joli sur le papier, et qu'il n'accepte que
les extensions qui ont une implémentation naturelle
et efficace (ou simple et efficace).
J'évalue le problème comme très compliqué.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:

| Gabriel Dos Reis wrote:
| Ah... Non, disons que dans mon point de vue, s'il est
| vital pour moi de boire dans les 48h qui viennent, cela
| ne m'empèche pas pour le moment de taper sur fclc++
| (mais ça me donner soif d'en parler).

Moi non plus, mais je boirai *avant* de taper sur fclc++ -- surtout je
dois m'éterniser avec toi ;-/


Mais tu n'as sur ce point que les obligations que tu te donnes.
Je ne crois pas que quiconque viendra te taper sur les doigts
si tu ne t'éternise pas avec moi.

| J'ajoute que j'ai aussi écrit "je pense que C++
| actuellement résoud les problèmes que j'évoquais"
| (qui étaient les problèmes "vitaux") et que la liste
| que j'ai faite était celle "des choses qui manquent
| actuellement à C++:" (dont aucun n'est vital, puisque
| C++ vit visiblement assez bien).

Donc, fianlement, tu ne sais plus où tu en es. Vitaux or not vitaux,
that is the question. C'est ça ?


Non, je sais trs bien. Je ne crois pas qu'il reste
de problème vitaux non adressé par C++, la preuve en
étant qu'il vit.

| >| Actuellement, on travaille avec des #include,
| >| il faut se protéger contre les doubles inclusions,
| >| faire attention au nommage des gardes, tout ça.
| >| Dans mon souvenir, en Ada ou Pascal, c'est le
| >| langage qui gère.
| >
| > Je connais relativement bien Pascal, et le langage n'est pas
| > télépathique ; donc, quand tu dis que c'est le langage qui gère, le
| > programmeur fait quelque chose. Aussi, ce que ces langages gèrent
| > a-t-il quelque chose à avoir avec C++ ? Ce n'est pas une question de
| > rhétorique.
|
| Oui, le programmeur dit que telle portion de code
| fait partie d'une unité, et fait partie de son interface
| ou de son implémentation. Il peut aussi écrire un
| programme (la distinction me semble pas forcément
| pertinente).
| Il utilise des directives d'utilisation (uses) et le
| compilateur comprend tout seul qu'il lui faut l'interface
| il gère les doubles inclusions, tout ça.
|
| Il me semble que cette structuration en module
| existe dans beaucoup de programmes C++, ou l'on
| met ce que l'on considère "interface" dans un .h[pp]
| et implémentation dans un .cpp.

Il est exact que cette structuration existe en pratique en C++ -- et
des tonnes de littératures sont consacrées à ça. Mais ce n'est pas ce
que j'appellerai module ; et de fait, si c'en était une tu ne
demanderais pas que C++ résolve ce « problème ».


Ta définition de module est-elle un surensemble de
ce cette structuration ?

| Que cette notion entre dans le langage pourrait

Cette notion est déjà dans le langage. Donc, si je suppose que tu
parles de quelque chose d'autre. Il est difficile de savoir quoi tant
que tu n'as pas précisé (et non, ce n'est pas la phase de proposition).


Je parle de la possibilité de dire qu'une ligne de
code fait partie de l'interface ou de l'implémentation
d'un module, afin que ce soit le compilateur qui gère,
ad minima, les notions d'inclusion multiple, mais
aussi, qu'il vérifie que ce qui est dans l'interface
est ce qu'on attend généralement d'une interface
(déclaration de variables, déclaration ou définitions
de types, déclarations de fonctions).
Cela ouvrirait éventuellement la porte (à creuser)
à un modèle de compilation plus riche que l'actuel.

| éventuellement obliger (ou signaler) à n'avoir que
| des déclarations de variable (et pas de définition)
| dans l'interface, ce genre de chose.
| On pourrait même envisager que la question des
| codes templates ou inline, qu'actuellement on importe
| avec #include, soit gérée par le compilateur qui,

Un code template n'est pas obligé d'être importé par #include.
Il existe un méchanisme dans le langage appelé « export ».


Oui, il n'y a qu'à utiliser un compilateur qui
l'implémente.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Gabriel Dos Reis
Marc Boyer writes:

| >| Il me semble que cette structuration en module
| >| existe dans beaucoup de programmes C++, ou l'on
| >| met ce que l'on considère "interface" dans un .h[pp]
| >| et implémentation dans un .cpp.
| >
| > Il est exact que cette structuration existe en pratique en C++ -- et
| > des tonnes de littératures sont consacrées à ça. Mais ce n'est pas ce
| > que j'appellerai module ; et de fait, si c'en était une tu ne
| > demanderais pas que C++ résolve ce « problème ».
|
| Ta définition de module est-elle un surensemble de
| ce cette structuration ?

S'il n'y avait qu'une définition...

| >| Que cette notion entre dans le langage pourrait
| >
| > Cette notion est déjà dans le langage. Donc, si je suppose que tu
| > parles de quelque chose d'autre. Il est difficile de savoir quoi tant
| > que tu n'as pas précisé (et non, ce n'est pas la phase de proposition).
|
| Je parle de la possibilité de dire qu'une ligne de
| code fait partie de l'interface ou de l'implémentation
| d'un module, afin que ce soit le compilateur qui gère,
| ad minima, les notions d'inclusion multiple, mais
| aussi, qu'il vérifie que ce qui est dans l'interface
| est ce qu'on attend généralement d'une interface
| (déclaration de variables, déclaration ou définitions
| de types, déclarations de fonctions).
| Cela ouvrirait éventuellement la porte (à creuser)
| à un modèle de compilation plus riche que l'actuel.

Beaucoup de gens ont essayé, chacun avec sa vision de que ce que doit
être une interface. Tu as probablement envie de contacter Jean-Marc
Bourguet, si tu penses que c'est un problème sérieux que la prochaine
version de C++ doit résoudre.

| >| éventuellement obliger (ou signaler) à n'avoir que
| >| des déclarations de variable (et pas de définition)
| >| dans l'interface, ce genre de chose.
| >| On pourrait même envisager que la question des
| >| codes templates ou inline, qu'actuellement on importe
| >| avec #include, soit gérée par le compilateur qui,
| >
| > Un code template n'est pas obligé d'être importé par #include.
| > Il existe un méchanisme dans le langage appelé « export ».
|
| Oui, il n'y a qu'à utiliser un compilateur qui
| l'implémente.

Et tu crois qu'une spécification de système de moduel échappera à
cette dure loi de la réalité ?

-- Gaby
Avatar
kanze
Marc Boyer wrote in message
news:<bv5bfn$p6f$...

[...]
Plus concrêtement, qu'appelles-tu module avec
interface/implémentation ?


Etre plus concret, c'est déjà avancer vers une
proposition.
Actuellement, on travaille avec des #include,
il faut se protéger contre les doubles inclusions,
faire attention au nommage des gardes, tout ça.
Dans mon souvenir, en Ada ou Pascal, c'est le
langage qui gère.


Pascal le gère d'une façon peu pratique -- il n'y a pas de compilation
séparée, tout le programme se trouve dans un seul module, et on n'a pas
droit à l'utilisation des bibliothèques externes. Ada et la famille
Modula font mieux.

Dans l'ensemble, je ne crois pas que tu trouveras de difficultés à
trouver un consensus sur le fait que l'inclusion textuelle n'est pas la
solution optimale au problème de la modularisation. En revanche, trouver
un consensus sur ce qui est la solution optimale ne me semble pas
évident. Et optimal ou non, avec vraiment un minimum de discipline, la
solution actuelle marche. Pas parfaitement. Même pas aussi bien qu'on
souhaiterait. Mais assez bien pour que ce ne soit pas un problème
primordial. Un problème, oui, et je suis tout à fait pour qu'on en
trouve une solution. Mais pas un problème primordial, qui rendrait le
langage inutilisable à longue terme si on ne le trouve pas.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Bruno Desthuilliers
ricky wrote:
bonjour

1) elle obligerait les gens qui veulent faire un compilateur
conforme à implémenter cette GUI, ce qui leur ferait perdre du
temps, qui ne serait pas passé à autre chose.



cela leur derait perdre leur temps parceque pour toi c'est peu important
cette parti
pour d'autres c'est tres important

et ce raisonnement tu peux le faire pour quasiment tout developpement,
donc on gele definitivement le c++ :(

Si en plus on
désire écrire un compilateur multi-plateforme (genre g++),
on plombe tout le développement.



pourquoi alors c'est possible dans la plupart des autres langages ?
java, tcl, python, etc marchent multi plateforme ! pourquoi le cpp
serait plus bloque qu'eux???

Heu... En ce qui concerne Python, je veux bien que tu me dises quel GUI

Toolkit est inclus dans le *language*. Il y a bien l'interface vers Tk
dans la bibliothèque standard (ce qui est différent, en ce que ça n'a
aucune incidence sur le langage lui-même...), mais - sauf cas triviaux -
elle est certainement moins utilisée que wxWindows, GTK ou QT (deux
biblio en C++, une en C... et aucune 'native' puisque Tkinter, comme son
nom l'indique, appelle Tcl/Tk).

Bref, justement pour des raisons de portabilité, Python s'abstiens
soigneusement d'avoir une GUI native.

Quant à Swing, on ne peut pas dire que ce soit l'élément le plus
convaincant de Java... (comme Tk : c'est lent partout et moche partout).

Mes deux centimes.
Bruno


Avatar
espie
In article <bv63hl$e2$,
Marc Boyer wrote:
Non, je pensais que l'interfacage entre la partie calcul
et la partie réseau d'un programme étaite de même nature
qu'entre la partie calcul et l'IHM, donc un problème qui
n'était pas du domaine que c'était donné C++.



<perfide> Le coup de l'extension de la norme pour une GUI, c'est
a cause des mecs qui lorgnent trop chez les voisins. Comme Java n'a
rien de specialement bandant en interface reseau (ah, ils ont beaucoup
de trucs, mais pas grand chose de rapide), leur interface graphique
fait des envieux. </perfide>

Avatar
Gabriel Dos Reis
(Marc Espie) writes:

| In article <bv63hl$e2$,
| Marc Boyer wrote:
| > Non, je pensais que l'interfacage entre la partie calcul
| >et la partie réseau d'un programme étaite de même nature
| >qu'entre la partie calcul et l'IHM, donc un problème qui
| >n'était pas du domaine que c'était donné C++.
| >
|
| <perfide> Le coup de l'extension de la norme pour une GUI, c'est
| a cause des mecs qui lorgnent trop chez les voisins. Comme Java n'a
| rien de specialement bandant en interface reseau (ah, ils ont beaucoup
| de trucs, mais pas grand chose de rapide), leur interface graphique
| fait des envieux. </perfide>

C'est un point de vue du problème. Un autre est qu'en C++, les choses
simples doivent rester simples et les choses complexes doivent être
possibles, sinon rendues simples. Il doit être possible d'enseigner
C++ de manière simple ; de nos jours, les GUI sont devenus des
domaines non-négligeables en programmation ; il doit être possible et
relativement simple d'utiliser des notions de GUI dans un programme C++.
Refuser de voir ce problème ne fait qu'encourager la confusion, des
solutions « vendor lock-ins » qui bénéficient peu à l'utilisateur.

Oui, utiliser l'API GUI Windows ou X11/Xlib dans un programme C++ est
une horreur.

-- Gaby
Avatar
Jean-Marc Bourguet
Gabriel Dos Reis writes:

Oui, utiliser l'API GUI Windows ou X11/Xlib dans un programme C++ est
une horreur.


Utiliser l'API X11/XLib dans un programme sans l'avoir encapsulee est
une horreur. Quel que soit le langage utilise.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org