Problème avec les string en C++

Résolu
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011 - 19 déc. 2006 à 23:45
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 20 déc. 2006 à 18:31
Salut,
Alors le code suivant ne marche pas, je ne sais pas pourquoi :

void LoadSkins(string Name)
{

    SDL_Surface *temp;
    string FileName = "Medias\Skins" + Name + "\Background.png";
    temp = IMG_Load(FileName);
    Level.Background = SDL_DisplayFormat(temp);
    SDL_FreeSurface(temp);

}

//Message d'erreur :

54:20 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\main.cpp [Warning] unknown escape sequence '\S'
 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\main.cpp In function `void LoadSkins(std::string)': 54 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\main.cpp stray '\' in program
54 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\main.cpp expected `,' or `;' before "Background"
54 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\main.cpp missing terminating " character
 C:\Documents and Settings\Alexandre\Bureau\Nibble project SDL\Makefile.win [Build Error]  [main.o] Error 1

Turok

18 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 déc. 2006 à 23:54
string FileName = "Medias\\Skins\" + Name + "\\Background.png";

C++ (@++)<!--
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 déc. 2006 à 23:55
Plusieurs erreurs: il faut double le \ dans une chaine
Tu ne peux pas écrire "Medias\Skins" + Name car "Medias\Skins" est un simple char*
Il faut faire:
string FileName = "Medias\\Skins\";
FileName += Name;
FileName += "\\Background.png";

Tu peux aussi passer l'argument Name par référence, c'est plus rapide

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 déc. 2006 à 23:56
'\' est caratère d'échappement en C/C++
"Medias\\Skins\"

ah c'est beau les: string + truc + "biduleMachin"
pas avec ça qu'on apprend la prog, poudre aux yeux qui ne mène à rien.

ciao...
BruNews, MVP VC++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 déc. 2006 à 00:00
C'est pas avec ca qu'on apprend, mais c'est avec ca qu'on fonctionne.
Aucune raison de s'en priver. D'ailleurs la question plus simple:
pourquoi utiliser autre chose ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2006 à 00:07
"poudre aux yeux qui ne mène à rien"
Il ne faut quand même pas exagérer. C'est largement suffisant pour la grande majorité des utilisations.

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 00:08
dépend ce qu'on vise comme taf (et ce qui va avec...).

La raison de s'en priver, simple je l'ai deja dite mais je repete:
avec vos biniouteries qui avancent comme de l'interprété, les boites paient de l'interprété au rabais et le taf en natif disparait peu à peu.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2006 à 00:15
Dans 90% du code d'une application, ca ne fera aucune différence.
Par exemple, calculer le chemin d'un fichier avant de le sauvegarder. Si c'est une opération qu'on fait peu souvent (à plusieurs secondes d'intervalle), j'aime autant utiliser une string pour faire ca (même résultat, beaucoup plus rapide à écrire, et moins de risque de se tromper).
Evidemment, ce n'est pour toutes les parties d'un programme

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 00:22
while(*d = *c) {c++; d++;}

mais honnetement, où peut se trouver la difficulté ???
c'est juste une habitude de regarder et de penser ubn probleme, absolument rien de plus.

ciao...
BruNews, MVP VC++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 déc. 2006 à 00:24
Le pb dont tu fais allusion BruNews, je n'y suis pas encore confronté, donc difficile de donner un avis sur le pb.


Je n'utilise que des string dans 100% de mes codes. Meme ce qui est
exécuté 1000 fois par seconde, on va rien gagner a utiliser autre chose
que des strings. Dans le pire des cas, le centième de sec perdu, on
s'en fou. On peut quand meme supposer que la stl est correctement
programmée.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2006 à 00:31
BruNews, est-ce que dans un cadre général, tu nies sincèrement l'utilité de la POO?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011
20 déc. 2006 à 00:32
Merci pour la réponse, la double "/" a résolu le problème.
Pour ce qui est string je vois pas pourquoi je m'en priverai,  non seulement la STL est reconnue,  et elle simplifie beaucoup la vie.

Turok
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 00:38
Continue, elle simplifiera aussi ta paie...

vecchio> quand je vois toutes les aberrations auxquelles ça a mené, je suis devenu résolument contre.

ciao...
BruNews, MVP VC++
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011
20 déc. 2006 à 00:40
Pour info mon boulot n'a rien a voir avec l'informatique, donc sa ne changera pas ma vie si j'utilise les string, sinon c ton avis et je la respecte.

Turok
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 00:42
luthor > c'est utilisé dans quoi ??? regarde les offres d'emploi, .net ou java, les offres en natif ne sont plus connues que par relation car peu courantes et réservées à la haute performance, justement là où tous ces bidules sont exclus.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 déc. 2006 à 00:45
J'avoue que ta réponse ne m'étonne même pas, j'ai toujours su que t'étais un extrémiste à niveau la. Ca serait bien que tu l'admettes un jour :)
J'admet quand même que ton travail a plus de valeur, mais il est évident que tout le monde ne peut pas se permettre d'employer les mêmes méthodes que toi, pour différentes raison (délais de livraison notament)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 00:50
Mais en ce cas il faut être cohérent et aller direct faire du .net ou autre interprété sinon c'est chomage.
Tu penses que ça ne me navre pas quand j'en vois de plus en plus à chaque fois qu'on est est sur stand qui viennent voir si on ne pourrait pas les aider à trouver du taf ?
C'est en visant haut qu'on a une chance de gravir les échelons, pas autrement.

ciao...
BruNews, MVP VC++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 déc. 2006 à 13:15
Mais un type string (de la stl ou fait maison) n'utilise ni plus ni
moins que du char a la base, donc quelle différence y a t-il a utiliser
un char directement ou une surcouche ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 déc. 2006 à 18:31
Décompile ton exe et regarde, tu verras c'est édifiant.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous