N'était pas? En fait, c'était! La raison pour laquelle vous avez une nouvelle ligne après Line 1
est exactement cette chaîne vide avec newline dedans et rien d'autre. Si ce n'est pas pour cette deuxième ligne, vous verrez Line 1Line 3
en sortie. (Vous avez dit vous-même. getline
défausse sauts de ligne)
Apparemment, la façon dont je comprends votre intention, vous étiez censé mettre en oeuvre votre cycle de sortie comme suit
for (it = text.begin(); it < text.end(); it++)
cout << *it << endl;
De cette façon, vous ajoutez un saut de ligne après chaîne pendant la sortie. Mais si c'est le cas, vous n'avez pas besoin d'ajouter manuellement un caractère \n
pour vider les chaînes pendant la lecture. En d'autres termes, décidez ce que vous voulez faire. Pour le moment, ce n'est pas clair.
Si vous souhaitez restaurer les mis au rebut lors de la lecture des sauts de ligne, vous devez faire pour toutes lignes, pas seulement pour ceux qui sont vides.
Si vous voulez ajouter la nouvelle ligne caractères lors de la sortie, vous ne besoin de les pousser à tout dans explictly les lignes de lecture .
En fait, c'est une idée plutôt étrange de pousser littéralement les caractères de nouvelle ligne dans vos chaînes. Pourquoi? Puisque vous avez déjà lu et stocké votre texte ligne par ligne, les caractères de nouvelle ligne peuvent être implicite. C'est à dire. vous pouvez faire l'impression comme je le fais ci-dessus (avec endl
), et tout ira comme prévu.
Andrey était correcte, j'avais tout simplement une autre erreur dans mon code qui faisait croire que les itérateurs ne travaillaient pas avec les nouvelles lignes – kevin