Chaine de caractere en C++ :S - C++ - Programmation
Marsh Posté le 06-10-2007 à 19:51:11
Pourtant, mon livre (datant de 2001) me dit clairement qu'une chaine de caractere est en fait un tableau de caractere... En aucun cas je n'est croiser de variable String dans cet ouvrage... Hmmm, c'est douteux
Marsh Posté le 06-10-2007 à 19:54:06
#include <tring>
et std::string.
ah et donnes le titre de ton bouquin avant de le jeter, car apparament c'ets une belle merde qui apprends à faire du C--
Marsh Posté le 06-10-2007 à 19:55:51
C et un peu + Résolution de problèmes et programmation en C++ Deuxieme edition par Yves Boudreault et Wacef Guerfali. Tu en aurais un a me conseiller donc ?
Mais http://www.commentcamarche.net/cpp/cppstring.php3 dit clairement : "En langage C++, une chaîne de caractères est un tableau" Donc il y aurais 2 facon de declarer des chaine de caractere ?
Marsh Posté le 06-10-2007 à 21:04:45
L'histoire du tableau reste vrai au niveau mémoire, mais en C++ t'es censé passer par la classe String qui encapsule ce genre de détail qui favorise les erreurs.
edit: regarde ici pour un exemple: http://fr.wikibooks.org/wiki/Progr [...] sse_string
reedit: Kangol a raison et moi j'étais fatigué, j'ai écrit que des conneries...
Marsh Posté le 06-10-2007 à 21:35:04
euh ... non, en C, une chaine se termine par un \0
en C++, la longueur est stockée dans l'objet encapsulant
Marsh Posté le 06-10-2007 à 22:56:59
Boudreault et Guerfali. OMG. Tout sauf celui là quoi, c'est écris genre pour des hommes de 1880 ...
Encore une fois les incontournables :
http://cpp.developpez.com/cours/cpp/
http://cpp.developpez.com/cours/stl/
http://cpp.developpez.com/cours/cppavance/
http://bruce-eckel.developpez.com/livres/cpp/ticpp/
Marsh Posté le 06-10-2007 à 23:15:17
D'accord merci de vos conseils Je vais regarder tes lien Joel F, merci bien.
EDIT : Mais Joel, c'est vraiment si pire que ca ce que je lit ? Tu as deja lu ?
Marsh Posté le 07-10-2007 à 01:01:09
Encore un autre probleme, mais celui la je ne sait vraiment pas quoi faire, J,ai fait une petite recherche sur Google et j'ai trouver que c'est le caratere que je demandait qui n'était pas trouvable. Voila mon code :
Citation : |
Je demande à l'utilisateur de donner des nombres entier, ensuite, mon programme redonne la chaine mais sans redondance.
Tout va bien jusqu'a ce que "Pos" de "TrouverNombre" devienne "7". J'ai essayer mon programme avec la chaine : "10 10 8", donc le 7eme chiffre serait '\0'. A la fin il me donne un erreur : "Expression : string subscript out of range". J'ai fait le debugger en fesant des breakpoint dans ma fonction mais il bloque vraiment a la ligne 10. Quelqu'un pourrait essayer le code et/ou l'analyser pour me dire ce qui ne va pas ? Merci a l'avance
Marsh Posté le 07-10-2007 à 12:14:31
king_67 a écrit : |
j'ai lu plein de bouquin de C++ avant de préparer mes support de cours
et en gros y a deux catégories :
- les bouqins de C++ écris par des gens qui font du C++.
- les bouqins de C++ écris par des gens qui font du C.
et les bouqins de la 2e catégories, à part cale-armoire, ils servent à rien.
Et en général, un bouqin de C++ qui au bout de 4 chapitres a pas commencer à parler de la STL,
bah il vaut pas la peine qu'on s'y attarde.
Un jour, on appelera C++ par un autre nom et ca évitera à des brèles qui
savent à peine écrire du C propre de se fendre d'écrire du C++.
Marsh Posté le 06-10-2007 à 19:32:57
Bonjour, je debute en programmation et j'ai de serieux probleme avec les chaine de caratere en C++, Je suis en train de lire un livre pour apprendre les principale caracteristique du language mais je reste avec de serieux probleme avec les chaines de caratere. Le probleme est que je ne peut jamais transferer ma chaine d'une fonction a une autre, autant par adresse que par valeur et je n'y comprend rien :S. Voila mon code
#include <iostream>
#include <cstring>
using namespace std;
char Oter_Les_redondances(char& Tableau[]) {
Tableau[0] = 'x'
cout << Nombre << endl;
return(0);
}
void main ( void ){
char Oter_Les_redondances(char& Tableau[]);
char Rep[1000];
cout << "Hmm hmm : ";
cin.getline(Rep, 1000);
Oter_Les_redondances(Rep);
cout << "Par le main : " << Rep << endl;
}
Voici les erreur que le compilateur me donne :
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(17) : error C2234: 'Tableau' : arrays of references are illegal
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(24) : error C2440: '=' : cannot convert from 'char' to 'char *'
1> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(24) : error C2146: syntax error : missing ';' before identifier 'cout'
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(24) : error C2065: 'Nombre' : undeclared identifier
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(31) : error C2234: 'Tableau' : arrays of references are illegal
1>d:\program files\microsoft visual studio 8\projects\programmation c++\c et un peu +\chap5_56_24.cpp(37) : error C2664: 'Oter_Les_redondances' : cannot convert parameter 1 from 'char [1000]' to 'char *[]'
Je vous explique comment j'ai proceder, premierement j'ai besion que l'utilisateur entre une chaine de nombre, ensuite, je doit enlever les redondance avec une fonction, donc, il faut que je transfere cette chaine de caractere a la fonction pour quelle le modifie ou me la renvoie sans redondance, mais voila que mon probleme se pose, ma chaine de caratere ne peut pas se faire donner par valeur ou par adresse... Esce moi qui utilise une mauvaise maniere ? Une mauvaise architecture ou autre ?
Donc aucune de mes chaine ne sont modifiable, je n'y comprend vraiment rien... Quelqu'un peut m'aider ?
Message édité par king_67 le 06-10-2007 à 19:40:18