je traite un fichier avec une liste chaînée de lignes avec chaque nœud qui ressemble à ceci:std :: out_of_range erreur?
struct TextLine{
//The actual text
string text;
//The line number of the document
int line_num;
//A pointer to the next line
TextLine * next;
};
et j'écris une fonction qui ajoute des espaces au début des lignes trouvées dans la text
variables , en appelant des fonctions comme linelist_ptr->text.insert(0,1,'\t');
Le programme compile, mais quand je le lance je reçois cette erreur:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::at
Aborted
Toutes les idées?
Vous n'avez pas fourni suffisamment d'informations. Le code que vous avez donné ne peut pas échouer de la manière que vous décrivez, alors peut-être qu'un autre code échoue que vous n'avez pas mis ici. – Omnifarious
Quelle est la raison pour laquelle vous n'utilisez pas 'std :: list'? (Devoir?) Ou encore mieux, 'std :: vector', ou' std :: deque'. – GManNickG
Pouvez-vous vérifier si votre implémentation, par hasard, utilise 'char *' comme 'string :: iterator'? Vous pouvez faire '#include', puis 'std :: cout << typeid (std :: string :: iterator) .name()' - et indiquer le résultat. –