bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 2019
-
10 avril 2006 à 15:53
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 2011
-
10 avril 2006 à 20:57
Bonjour a tous,
J'ai un ptit probleme au niveau d'une manipulation sur une chaine de caracteres. Voici le code :
<HR>
std::string *position = new std::string[2925];
std::string buf;
std::ifstream f(
"Icones\\Icones.pos");
f >> buf;
f.close();
int j;
for (i = 1; ;i++)
{
j = i * 3;
position[i] = buf.substr(j , 3); //C'est ici que se situe surement le bug... il ne me dit pas exactement où...
if (position[i] ==
"")
{
break;
}
}
<HR>
Il me renvoit dans le fichier "xstring" a la 13eme ligne, accompagné d'une boite de dialogue qui a trois boutons : "Break", "Continue" et "Ignore" avec ecrit dessus "Unhandled exception at 0x7c81eb33 in Meshes.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0012fbe0..".
Je ne comprends pas pourquoi... c'est pourquoi je voudrais que vous m'aidiez.
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 4 novembre 2023 10 avril 2006 à 17:01
1) les strings vont de 0 à N-1 pour une taille de N
2) quelle taille à buf apres la lecture du fichier ?
car il est possible que tu essaies d'acceder à une zone de buf, qui n'existe pas
quand tu fais :
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 10 avril 2006 à 20:57
std::string *position = new std::string[2925];
ouf sen en fais des strings un peu trop meme car les strings utilise la memoire virtuels de la ou on parle que les strings sont quazi illimité , donc pourtoi ne fais pas juste
std::string position
...
apres tu contninue avec un seul string pas 2925
qui prend alors beaucoup d'espace memoire pour rien