Problème avec les string en C++ [Résolu]

Signaler
Messages postés
78
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2011
-
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
string FileName = "Medias\\Skins\" + Name + "\\Background.png";

C++ (@++)<!--
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
'\' 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++
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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 ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
"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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
78
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2011

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
78
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2011

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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 ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Décompile ton exe et regarde, tu verras c'est édifiant.

ciao...
BruNews, MVP VC++